首页 > 其他分享 >http协议缓存详解

http协议缓存详解

时间:2023-01-16 19:45:10浏览次数:48  
标签:缓存 浏览器 请求 cache Modified 响应 详解 http

  1. 浏览器端强制缓存,http响应头expires 和 cache-control 是设置缓存的重要参数

    • expires 设置到期时间点,这是http1.0的产物,对于客户端时间和服务器端有时差的情况,会导致缓存失效,或者缓存时间变长。

    • cache-control 设置多久以后过期,http1.1的的优化版本,解决了时差的问题,建议用这个。

    • 目前的浏览器两个参数都是生效的,那个先过期那个生效,建议只使用cache-control

    • 强制缓存有请求记录,但是不会真实的发送请求,响应结果直接是200.

    • 这种固定缓存时间适合那些几乎永远不会变动的资源。如果有一定变动的不适合。

  2. 浏览器端协商缓存,由响应头ETag 和 Last-Modified控制

    • 第一次请求资源的时候服务器响应头返回这两个参数,ETag是资源None值,一般是文件hash,Last-Modified是最后一次修改时间

    • 第二次请求的时候浏览器端默认在If-None-Match 和 If-Modified-Since,带上ETag和Last-Modified,然后由服务端程序比对这两个值是否变动。

    • 服务端比对过程,If-Modified-Since如果和后端最后一次修改时间不相等那就文件一定被改过,如果相等可能是一个时间精度内改了多次,所以要比对资源的none值。如果还一样,服务器端认为客户端是最新资源,返回304和空的响应体,浏览器就会去读取本地缓存。如果比对不上,那么就正常返回服务器资源,状态码200.

    • 协商缓存适用于需要前端缓存,但是有一定变动可能的资源。

  3. 客户端发起请求的时候,可以通过请求头,决定是否要走缓存。

    • no-cache:带了这个请求头的请求不在走强制缓存,但是还可以走协商缓存。

    • no-store:带了这个请求的不走强制缓存和协商缓存,相当于这个请求禁用缓存。

标签:缓存,浏览器,请求,cache,Modified,响应,详解,http
From: https://www.cnblogs.com/cxygg/p/17056177.html

相关文章

  • Redis 缓存和 MySQL 如何实现数据一致性
    需求起因在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。......
  • WebServerz支持Http post get
       <webServices><protocols><addname="HttpPost"/><addname="Documentation"/><addname="HttpSoap"/><addnam......
  • 【微信小程序】缓存过期时间的相关设置
    微信小程序缓存机制介绍  每个微信小程序都可以有自己的本地缓存,可以通过​​wx.setStorage(wx.setStorageSync)​​​、​​wx.getStorage(wx.getStorageSync)​​​、​​w......
  • 【跨域报错解决方案】Access to XMLHttpRequest at ‘http://xxx.com/xxx‘ from orig
    错误背景描述:在使用ajax调用api接口的时候:发生错误如下​​​AccesstoXMLHttpRequestat‘http://xxxx.com/xxx’fromorigin‘null’hasbeenblockedbyCORSpolic......
  • 【ES6】Module模块详解
    【ES6】Module模块详解​​一、Module的由来​​​​二、严格模式​​​​三、export命令​​​​四、import命令​​​​查看更多ES6教学文章:​​​​参考文献​​引言:由于......
  • 【ES6】Generator函数详解
    【ES6】Generator函数详解​​一、Generator函数简介​​​​基本概念​​​​函数写法​​​​yield关键字介绍​​​​二、next方法的参数​​​​三、for...of循环​​​......
  • 【ES6】Promise对象详解
    【ES6】Promise对象详解​​一、Promise对象的含义​​​​二、Promise对象的用法​​​​三、Promise对象的几个应用【重点】​​​​1、时间延迟函数​​​​2、图片异步......
  • Log4Net组件的应用详解
     第一步:添加并应用Log4net.dll。然后在Web.config文件中添加下面的配置局<configSections><sectionname="log4net"type="log4net.Config.Log4NetConfigurationSectionH......
  • GShang博客园主题高级版本适配教程详解
    主题预览博客Favicon自定义导航栏扩展博客内部公告信息首页轮播信息侧边栏公告信息整合博文发布信息位置调整博文侧边目录博文代码块复制博文作者信息签名博客捷径应用(更多......
  • nginx&http 第四章 ngx http代理 && 转载
    Nginx访问上游服务器的流程大致分以下几个阶段:启动upstream、连接上游服务器、向上游发送请求、接收上游响应(包头/包体)、结束请求。upstream相关的两个重要数据结构ngx_......