赞
踩
浏览器缓存:浏览器在本地磁盘对用户最近请求过的文档进行存储,当再次访问时,浏览器可以直接从本地磁盘中加载文档。是web性能优化的重要方式。针对数据的请求不用缓存,就是Content-type里有关json的那些请求。
浏览器第一次请求时,本地无缓存,服务器会将页面最后修改时间通过Last-Modified标识有服务器发给客户端,服务器还会生成一个Etag发送给客户端。
浏览器缓存分为强缓存和协商缓存。在协议头中设置
强制缓存:状态码为200,不发送请求到服务器,直接从缓存中取。跟过期时间进行比较。Expires策略设置失效时间,精确到时分秒;一般应用Cache-control策略,指明当前资源的有效期,优先级高于Expires。Cache-Control的值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age,含义如下:
1、Public:可以被任何缓存区缓存;
2、Private:指示对于单个用户的整个或部分响应消息,不能被共享缓存处理;
Public和Private的区别:业务逻辑产生的内容,从缓存角度可以分为两类。一类是通用逻辑处理,比如获取最新文章列表,所有人看到的都是一样的;另外一种是猜你喜欢,每个用户都有自己的内容。中间层的代理服务会做一些缓存,猜你喜欢不用缓存,所以需要给内容的缓存分级。
3、no-cache:不是不进行缓存,是指可以在本地缓存,可以在代理服务器缓存,但是这个缓存要服务器验证才可以使用。是把资源进行了本地缓存,在浏览器使用缓存之前,会使用last-Modified和Etag往返浏览器进行对比,判断时间和唯一标识符和服务器的是否一致,一致的话304使用缓存,不一致的话请求服务器;(协商缓存)
4、no-store:彻底禁用缓存,本地和代理服务器都不缓存,每次都从服务器获取;
5、max-age:表示资源过了多少秒之后变为无效(以秒为单位);
6、s-maxage:和max-age指令功能相同,不同点在于s-maxage不能用于私有缓存,只能用于多用户使用的公共服务器,对于同一用户的重复请求和响应来说,这个指令没有意义;
6、min-fresh:要求缓存服务器返回min-fresh时间内的缓存数据,例如:Cache-Control:min-fresh=60,这就要求缓存服务器发送60s内的数据;
7、max-stable:如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
协商缓存:
Last-Modify和If-Modify-Since:浏览器第一次请求资源的时候,服务器返回的header中会加上Last-Modify,Last-Modify表示资源最后一次被修改的时间,当资源被再次请求时,request的请求头中会包含If-Modify-Since,这个值是之前的Last-Modify。服务器收到If-Modify-Since后,对比资源最新一次修改的时间和If-Modify-Since做比较,来决定是否命中缓存。Last-Modify是以秒为单位,所以如果一个资源在一秒内修改过,并不能精确记录下来。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。