django-浏览器缓存

## 强缓存

**不会向服务器发送请求,直接从缓存中读取资源**

1,Expires

**缓存过期时间,用来指定资源到期的时间,是服务器端的具体的时间点**

Expires=max-age + 请求时间

**Expires 是 HTTP/1 的产物,受限于本地时间,如 果修改了本地时间,可能会造成缓存失效**

 

2, Cache-Control

在HTTP/1.1中,Cache-Control主要用于控制网页缓存。比如当`Cache-Control:max-age=120 `代表请求创建时间后的120秒,缓存失效

 

横向对比 Expires VS Cache-Control

 

#### 协商缓存

**协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程

1,Last-Modified和If-Modified-Since

​ 第一次访问时,服务器会返回

Last-Modified: Fri, 22 Jul 2016 01:47:00 GMT

​ 浏览器下次请求时 携带If-Modified-Since这个header , 该值为 Last-Modified

​ 服务器接收请求后,对比结果,若资源未发生改变,则返回304, 否则返回200并将新资源返回给浏览器

​ 缺点:只能精确到秒,容易发生单秒内多次修改,检测不到

 

2,ETag和If-None-Match

​ Etag是服务器响应请求时,返回当前资源文件的一个唯一标识(由服务器生成),只要资源有变化,Etag就会重新生成

​ 流程同上

 

对比 Last-Modified VS ETag

1,精度不一样 - Etag 高

2,性能上 - Last-Modifi 高

3,优先级 - Etag 高

 

posted @ 2019-12-04 09:02  chenlulu1122  阅读(532)  评论(0)    收藏  举报