HTTP 协商缓存
2018-03-19 23:08
183 查看
Last-Modified与If-Modified-Since
如果没有任何缓存策略,那么浏览器会默认开启它。这个时候,我们发起请求,那么就会看在 response 里有一个字段 Last-Modified:然后下一次请求的时候,浏览器会就把这个 Last-Modified 中的内容加到 request 中。变成 If-Modified-Since 字段的内容。
这个时候,服务器(一般使用 Nginx) 就会拿本地文件的信息与这个时间进行比较,如果相同的话,那么就会返回 304 。告诉浏览器从缓存中拿到信息。
Cache-Control 与 Expires
当然,我们还可以使用 Chche-Control 头来进行控制。可以在里面使用 max-age 来控制资源最长缓存时间如果要强制不缓存,那么可以在 Cache-Control 中进行下面几种操作
max-age=0
添加 private
给 Expires 设置为一个过去的时间点
# 可以在 nginx 的配置文件中这么修改 # 用正则过滤要使用 Expires 字段的资源,会自动同时设置 Cache-Control 与 Expires location ~* \.(css|js|png)$ { expires 5d; }
ETag 与 If-None-Match
也可以根据资源的内容来进行设置,如果资源内容完全一样,这个时候,我们就可以使用 ETag 来进行协商缓存了,第一次访问的时候,服务器会把内容的校验和放在 ETag 字段中,下次再请求的时候,则会向服务发送 If-None-Match 如果内容没有修改,那么就会返回 304. 要不返回最新内容# ngnix 开启 etag 的方法 etag on;
相关文章推荐
- php 超大文件下载程序[http 缓存协商,Etag标记,断点续传]
- http协商缓存VS强缓存
- http协商缓存VS强缓存
- HTTP强缓存和协商缓存
- http协商缓存VS强缓存
- HTTP协商缓存实践
- 10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
- 浏览器缓存和HTTP缓存协商(很清晰)
- ASIHTTPRequest缓存详解
- 浏览器HTTP缓存原理分析
- HTTP协议之内容协商
- 缓存与涉及的http头
- HTTP 缓存
- HTTP 缓存介绍
- Retrofit2,okhttp3 通过拦截器进行缓存
- Solr httpCache 缓存分析
- XmlHttp / XmlHttpRequest 避免缓存
- http 缓存
- Android http 请求 Json数据缓存到内存
- HTTP请求响应关于缓存技术的探讨