• 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,浏览器继续使用本地缓存

  • 相关阅读:
    C# 删除文件和文件夹方法
    asp.net上传图片
    oracle 分区表
    C# 读取客户端文件路径和文件夹路径
    【转】AjaxPro与服务器端交互过程中如何传值
    The 'OraOLEDB.Oracle.1' provider is not registered on the local machine的原因
    怀疑做Oracle的人思维方式是不是有点秀逗
    在Linux下安装Mono 1.0
    ORA03114: not connected to ORACLE 微软的Bug
    删除确认提示
  • 原文地址:https://www.cnblogs.com/guolizhi/p/9040958.html
Copyright © 2020-2023  润新知