HTTP缓存

HTTP缓存

缓存是一种可以帮助网络连接更快的技术,因为需要传输的东西越少越好。

许多资源可能非常大,并且在时间和实际检索成本(例如在移动设备上)方面非常昂贵。

HTTP提供不同的缓存策略供浏览器使用 。

不缓存( No caching )

首先,通过使用no-cache值,Cache-Control头可以告诉浏览器在没有检查ETag值之前不要使用资源的缓存版本:

Cache-Control: no-cache

一个更严格的无存储选项告诉浏览器(和所有中间网络设备)甚至不存储资源在它的缓存:

Cache-Control: no-store

如果cache-control有max-age值,这是用来确定该资源作为缓存有效的秒数:

Cache-Control: max-age=3600

Expires 头部

当发送HTTP请求时,浏览器会根据所需的URL检查缓存中是否有该页面的副本。

如果有,它检查页面的时间。

如果HTTP响应Expires头值小于当前日期时间,则页面为新页面。

Expires头采用以下形式:

Expires: Sat, 01 Dec 2018 16:00:00 GMT

条件GET( Conditional GET )

浏览器可以向服务器发送请求,而不是仅仅请求页面,它添加了一个If-Modified-Since头,基于它从当前缓存的页面获得的Last-Modified头值。

这告诉服务器只有在资源自该日期以来已经更新时才返回响应体(页面内容)。

否则,服务器将返回一个304 Not Modified响应。

使用If-None-Match 和ETag

Web服务器(取决于设置、页面的服务方式等)可以发送一个ETag头。

这是资源的标识符。每次资源更改时,比如更新时,ETag也应该更改。

浏览器发送一个If-None-Match,其中包含一个(或多个)ETag值。

如果没有匹配,服务器返回资源的新版本,否则返回304 Not Modified响应。

(1)
上一篇 2020年11月2日 下午10:06
下一篇 2020年11月2日 下午10:15

发表回复

登录后才能评论