Cache-Control、ETag和过期的Expires

前记

HTTP缓存是web机能优化的一个基本知识,目标是当你第二次要求时,将JS、CSS、的要求速率加速,然则html却不能设置Cache-Control,这是为何,能够想想

Cache-Control

如何用

response.setHeader('Cache-Control','max-age=315360000')

相应设置相应头,max-age是设置缓存停留时候,单元为秒,从你接收到谁人相应最先计时,平常是设置10年或许1年

功用

设置Cache-Control能够在一段时候内不接见服务器,直接用当地内存或许硬盘中猎取相应,因而极大的加速了接见速率,关键在于不会发送HTTP要求

更新资本

当缓存那末久,那假如缓存资本更新了怎么办

  • 能够增加查询参数,如?v=...如许就能够更新缓存了
  • 另有就是能够在进口html文件处把url变一下,和之前的都不一样,也能够更新缓存
  • 另有就是在文件名前面天生一串字符,变动文件名,也能够更新缓存

ETag

说到ETag就不得不提md5择要算法,这个算法能够盘算一个文件,然后天生一串字符,雷同文件内容天生的字符串是一样的,假如内容不雷同天生的字符串就会不一样,而且内容差异越小,字符串差异越大

如何用

response.setHeader('ETag', fileMd5)

fileMd5就是md5天生的字符串

功用

设置了ETag后,今后每次接见服务器都要设置头If-None-Match来带上那串字符串,资本未变动,服务器就会返回304,和Cache-Control差别就是,ETag照样会要求,不过资本稳定的话,相应体是空的。

更新资本

这就异常简朴了,当服务器更换了一个资本,那天生的字符串就会不一样,当If-None-Match带着本来的字符串来比较时,发明字符串不一样,那就会下载新的资本

过期的Expires

Expires也是一个相应头,功用和Cache-Control差不多,然则如今逐步被镌汰了,而且假如在Cache-Control相应头设置了 “max-age” 或许 “s-max-age” 指令,那末Expires头会被疏忽。
究其原因是因为Expires也是设置时候来做限期,然则它设置的是到期时候,而且如果GMT花样的时候,最致命的是它的到期时候是根据体系时候来看的,假如体系时候毛病超过了Expires的到期时候,那末就会要求不到资本。

    原文作者:梁广铭
    原文地址: https://segmentfault.com/a/1190000016171065
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞