我的内容会根据请求的日期而变化,即
在2018-09-10T00:00
和2018-09-10T23:59
请求网页时,系统会投放相同的内容,但会在2018-09-11T00:00
投放不同的内容(基于服务器时间)。
我可以在内容上设置vary
http标头(由上游服务器设置)吗?
或者是否有另一种方法在nginx中执行此操作(理想情况下仅在某些路径上)?
答案 0 :(得分:1)
您需要添加“Expires”标题,您可以在Nginx或应用程序中执行此标题。标题看起来像这样,只是作为一个例子:
Expires: Sun, 09 Oct 2016 23:59:59 GMT
在PHP中,你可以用:
生成它header('Expires: ' . gmdate('D, d M Y H:i:s', strtotime(date("Y-m-d 23:59:59"))) . ' GMT');
在Nginx中,您只需将以下内容添加到服务于指定内容的位置或服务器块中:
expires @00h00m;
这样内容就会在午夜过期。
答案 1 :(得分:0)
通过设置缓存控制标头来控制客户端缓存。
有关选项的讨论,请参阅http://nginx.org/en/docs/http/ngx_http_headers_module.html#expires。可以使用@前缀指定一天中的时间。因此,在服务器时间下午3:30设置到期时,您的配置看起来像这样:
location ~* \.(css|js)$ {
expires @15h30m;
add_header Cache-Control "public";
}
如果您的内容每小时过期,您可能会像在lua中进行时间计算,并将其设置为过期使用的ngx变量。