美文网首页
http缓存与H5缓存

http缓存与H5缓存

作者: SailingBytes | 来源:发表于2020-05-18 19:27 被阅读0次

    http缓存的是指:当Web请求抵达缓存时, 如果本地有“已缓存的”副本,就可以从本地存储设备而不是从原始服务器中提取这个文档。

    一、http有三种缓存方式:

    1、强制缓存

    服务端设置响应头Cache-Control:

    1)max-age=xxx,并且设置Expires响应头过期时间,客户端自行判断是否读取缓存(Cache-Control: no-cache)

    2)no-cache时,表示禁用缓存(Cache-Control: no-cache)

    2、协商缓存

    通过状态码304告诉客户端该走缓存

    3、通过文件内容来缓存

    1)修改文件时间:通过文件的最后修改时间判断该不该读取缓存,服务端设置响应头Last-Modified,通过文件的最后修改时间判断该不该读取缓存,服务端设置响应头Last-Modified。

    客户端把上次服务端响应头中的Last-modified值通过if-modified-since 传递给服务端 , 服务端通过比较当前文件的修改时间和上次修改时间(上次传给客户端的值)。

    xmlHttp.setRequestHeader("If-Modified-Since","0");

    xmlHttp.setRequestHeader("Cache-Control","no-cache");

    服务器检查参数值,如果文件没有改变则返回304,此时浏览器就访问本地缓存了。如果服务器上该文件被修改过,那么参数值就不一样,服务器就把最后的文件返回给浏览器。

    2)修改文件内容:通过文件的内容来判断该不该读取缓存,服务端通过把文件指定的内容(如版本号)读取出来,通过md5进行base64加密得出hash值,把这个值设置响应头Etag,客户端下一次请求通过if-none-match带过来,服务端再比对当前文件内容加密得出的hash值和上次是否一样。

    二、H5缓存

    1、设置meta

    <META HTTP-EQUIV="pragma" CONTENT="no-cache">

    <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">

    <META HTTP-EQUIV="expires" CONTENT="0">

    2、H5设置文件更新版本(或时间戳),通过更新文件后缀达到浏览器控制重新加载的作用。

    相关文章

      网友评论

          本文标题:http缓存与H5缓存

          本文链接:https://www.haomeiwen.com/subject/emupohtx.html