zoukankan      html  css  js  c++  java
  • HTTP缓存

    浏览器端的缓存可以分为强制缓存对比缓存

    强制缓存

    如果是强制缓存,浏览器会直接读取浏览器本地存储的缓存。

    如果未失效,则直接使用缓存数据。

    如果缓存失效,则会请求服务器端,服务器端返回缓存规则和数据。

    对比缓存

    如果是对比缓存,浏览器首先回去服务器端验证该缓存是否失效。

    如果未失效,则通知浏览器该资源未失效。

    如果已失效,则返回给浏览器最新的数据和缓存规则。并且将缓存规则和最新的数据写入浏览器本地缓存

    强制缓存规则

    服务器端会返回两个字段Expires(HTTP1.0)Cache-Control(HTTP1.1)两个字段来控制强制缓存

    由于客户端的时间不太可控,因此在HTTP1.1中,新增了Cache-Control,该字段可以直接设置资源的缓存时间max-age。这样一来,资源的缓存期可以使用服务器端的时间了。

    对比缓存规则

    对比缓存存在两套规则

    第一种:ETag/If-None-Match这套规则的优先级会高于下面介绍的第二种规则

    在第一次服务器端返回一个资源时,在响应头信息里面会包含一个ETag的字段,该字段有服务器端生成。

    下一次浏览器端判断这个资源是不是过期时,会带上一个If-Modifed-Since的信息,该信息就是上一次的ETag信息。用于验证这个资源是不是过期。

    如果相同,则返回304的状态码

    如果不同,则返回200的状态码以及最新的资源

    第二种:Last-Modified/If-Modified-Since,本套规则的优先级低于第一套

    在第一次返回一个资源时,响应头信息里面会包含一个Last-Modifed的字段,该字段有服务器端生成,标识了该资源的上一次修改时间

    浏览器端再次请求时,会带上一个If-Modifed-Since的字段,该信息就是Last-Modifed的时间

    如果资源的最后修改时间大于If-Modifed-Since,就返回200和最新的资源

    如果资源的最后修改时间小于If-Modifed-Since,就返回304,浏览器继续使用本地缓存

  • 相关阅读:
    Java Collection知识总结
    Java异常总结
    关于触发器
    关于事务
    git分支的创建、删除、切换、合并
    github项目上传管理
    如何在github上下载单个文件夹?
    常见的javascript跨站
    各类常用端口漏洞缺陷
    SEO优化实践操作
  • 原文地址:https://www.cnblogs.com/guolizhi/p/9040958.html
Copyright © 2011-2022 走看看