博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浏览器缓存
阅读量:5016 次
发布时间:2019-06-12

本文共 1327 字,大约阅读时间需要 4 分钟。

一. 强缓存和协商缓存

    第一次请求资源时,会根据http头部信息判断是否缓存;

    第二次请求资源时,会先判断是否命中强缓存(Cache-Control和Expires),如果是则直接获取资源,本次请求不会与服务器进行通信;如果没有命中,则会携带第一次请求时返回有关缓存的头部信息(Last-Modified/If-Modified-Since 和 Etag/If-None-Match);若命中则直接获取缓存资源,否则获取新资源。

  状态码 与服务器通信
强缓存(本地缓存) 200(from cache) 否,直接取缓存
协商缓存 304(not modified) 是,通过服务器判断缓存是否可用

 

 

 

二. 强缓存header

  1. Expires:http1.0,GMT格式的时间字符串,缓存有效的截止时间;
  2. Cache-Control:max-age=10000:http1.1,相对值,资源第一次请求时间和设定的有效期计算出一个资源过期时间,再拿这个时间和当前时间比较;
    还有几个常用值no-cache(不使用强缓存),no-store(禁止缓存数据),public(可被所有用户缓存),private(只允许终端用户缓存);
  3. Cache-Control优先级高于Expires;

三. 协商缓存header

  1. 第一次请求响应头带上Last-Modified/Etag,则后续请求会带上If-Modified/If-None-Match;
  2. Last-Modified:GMT格式,最后修改时间;
    If-Modified-Since:也是GMT格式,判断而这是否一样;如果命中缓存,则返回304,并且不会返回资源内容,不会返回Last-Modify;
  3. Etag/If-None-Match:服务器生成的唯一标识字符串,与Last-Modified不同的是,当服务器返回304时,由于Etag重新生成过,所以头部信息还是会把这个Etag返回,即使没变化;
  4. 为什么有了Last-Modified还要Etag:一些文件周期性更改,但内容不变;有些文件修改频繁,1s内修改多次;某些服务器不能精确得到文件最后修改时间;Etag优先于Last-Modified验证。

四. cookie & session & localStorage & sessionStorage

  • cookie通常保存在浏览器,session通常保存在服务器端,一般来说当服务器收到请求要创建session时,首先会在客户端监测是否包含sessionid,如果有则根据id返回session;没有的话创建新的sessionid并相应给客户端;通常使用cookie存储sessionid。
  • 单个cookie不超过4kb,session无大小限制;
  • localStorage和sessionStorage一般都是5Mb,前者是永久的,后者关闭页面即失效;
    通用方法:setItem(key, value),getItem(key),removeItem(key),clear(),key(index);

转载于:https://www.cnblogs.com/colima/p/8564903.html

你可能感兴趣的文章
SEO搜索引擎
查看>>
关于本地使用tomcat部署web应用,浏览器自动跳转为https的问题
查看>>
一、Text To Speech
查看>>
Java读取并下载网络文件
查看>>
github上构建自己的个人网站
查看>>
在word中粘贴的图片为什么显示不完整
查看>>
SQL Server 数据库的鼠标操作
查看>>
net软件工程师求职简历
查看>>
SQL SERVER BOOK
查看>>
JS基础回顾,小练习(判断数组,以及函数)
查看>>
多任务——进程
查看>>
WCF:如何将net.tcp协议寄宿到IIS
查看>>
WebAPI HelpPage支持area
查看>>
Path元素
查看>>
php_soap扩展应用
查看>>
js学习总结----DOM增删改和应用
查看>>
希尔伯特矩阵(Hilbert matrix)
查看>>
(20)sopel算法
查看>>
学习总结 javascript 闭包
查看>>
实验吧一个小坑注入
查看>>