• 列举⼀下 HTTP 中关于 "资源缓存" 的头部指令 (Head) 有哪些 ? 并简要介绍⼀下设置的规则 ?


    强制缓存

    • Expires 指定⼀个缓存的过期时间,如果当次请求的资源在该过期时间之前,则命中缓存。缺点是因为这个时间是⼀个绝对时间,所以当客户端本地时间被修改后,服务器与客户端时间偏差变⼤会 导致缓存混乱。
    • Cache-Control ⼀般通过 max-age 指定⼀个相对时间,单位是秒。优先级⾼于 Expires 。其他常⽤的取值有:
    • public 表示响应可以被任何对象缓存
    • private 表示只能被单个⽤户缓存,⾮共享的,不能被代理服务器缓存
    • no-cache 强制所有缓存了该响应的⽤户,在使⽤已缓存的数据钱,发送待验证器的请求到服务器。
    • No-store 禁⽌缓存

    协商缓存

    若未命中强缓存,则浏览器会将请求发送⾄服务器。服务器根据http头信息中的Last-Modify/If-ModifySince或Etag/If-None-Match来判断是否命中协商缓存。如果命中,则http返回码为304,浏览器从缓存 中加载资源。

    • Last-Modify/If-Modify-Since 浏览器第⼀次请求⼀个资源的时候,服务器返回的header中会加上Last-Modify,Last-modify是⼀个时间标识该资源的最后修改时间,当浏览器再次请求该资源时,发送的请求头中会包含If-Modify-Since,该值为缓存之前返回的Last-Modify。服务器收到IfModify-Since后,根据资源的最后修改时间判断是否命中缓存。
    • ETag/If-None-Match ETag可以保证每⼀个资源是唯⼀的,资源变化都会导致ETag变化。ETag值的变更则说明资源状态已经被修改。服务器根据浏览器上发送的If-None-Match值来判断是否命中缓存。

    作者:Roc
    链接:https://juejin.cn/post/6970867290480853006
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    虚心学习、丰富自己
  • 相关阅读:
    神经网络回顾-感知机
    遗传算法杂记
    差分进化算法DE和粒子群算法PSO
    遗传算法GA
    Caffe学习 五 conv_layer与im2col
    Selenium
    Selenium
    Selenium
    Selenium
    Selenium
  • 原文地址:https://www.cnblogs.com/tkqq000/p/14864005.html
Copyright © 2020-2023  润新知