+
95
-

回答

Vary是跟缓存相关的,我们来看看没有vary下的传统缓存方式

浏览器 或 代理服务器 会根据 请求URL 生成 key 来建立与缓存文件的一一对应关系,这样后面相同的请求才能找到并使用缓存。

但是如果相同的url采用不同设备来访问,例如手机和电脑对同一个url的访问,如果没有vary的,可能电脑缓存的页面被手机访问了,页面混乱了,应该是手机端访问缓存手机端页面,电脑端访问缓存电脑端页面。

为了解决这个问题,vary发明了,用 Vary 来区分,不同设备的相同URL请求,完美解决这个混乱。Vary 是在 HTTP 协议的 1.1 版本中新添加功能。

Vary 语法

Vary: *

Vary: <header-name>, <header-name>, ...

* :表示不使用缓存,不推荐使用。

用 Cache-Control: no-store 表示不使用缓存更合适,因为这样的代码阅读更清晰明了。

header-name :表示 HTTP 头,可以有多个。

那么上面电脑端与手机端缓存的问题我们可以通过vary解决,服务器返回 Vary: User-Agent 针对不同设备生成不同缓存。

客户端请求时带上 User-Agent 头,明确设备类型。

网友回复

我知道答案,我要回答