Jas*_*sta 6 http cache varnish cookies http-cookie
即使存在 cookie,我也想使用 Varnish 来缓存某些页面。我需要注意 3 种可能性:
预期的行为是:
我已经阅读了一些关于 Varnish 的文档,但我不知道这是否是默认行为,或者我是否必须在 VCL 中进行一些设置才能使其发生。
默认情况下,Varnish 不会缓存带有 Cookie 标头的请求:
http://varnish-cache.org/svn/trunk/varnish-cache/bin/varnishd/default.vcl
sub vcl_recv {
(...)
if (req.http.Authorization || req.http.Cookie) {
/* Not cacheable by default */
return (pass);
}
return (lookup);
Run Code Online (Sandbox Code Playgroud)
您需要将所需的行为编码到配置中。请注意,Cookie 是客户端请求的一部分,而不是“页面”(实际上是对象)。“页面”(对象)带有一个“Set-Cookie”标头 - 这就是将被缓存的标头。
另外,“Vary: Cookie”并不意味着“不缓存”。这意味着为接收到的每个 Cookie 值缓存一个对象。
如果您的应用程序没有生成任何基于 Cookie 的内容,则可以安全地忽略它:
- if (req.http.Authorization || req.http.Cookie) {
+ if (req.http.Authorization) {
Run Code Online (Sandbox Code Playgroud)
做一些测试,你就会掌握它的窍门。希望这可以帮助。
归档时间: |
|
查看次数: |
7322 次 |
最近记录: |