我正在使用 nginx 来为我的静态内容提供服务,有没有办法为每个满足特定规则的文件设置过期标头?例如,我可以为所有扩展名为“.css”的文件设置 expires 标头吗?
我想知道为什么 Cloulflare 不会缓存某个静态 js 文件。
鉴于要求:
curl -I http://www.testlifeinuk.com/dist/lifeinuk.js
Run Code Online (Sandbox Code Playgroud)
标题返回如下:
HTTP/1.1 200 OK
Date: Mon, 12 Jan 2015 10:59:21 GMT
Content-Type: application/javascript
Connection: keep-alive
Set-Cookie: __cfduid=d11a9f01292153436a211a9d807a3399b1421060361; expires=Tue, 12-Jan-16 10:59:21 GMT; path=/; domain=.testlifeinuk.com; HttpOnly
X-Powered-By: Express
Etag: W/"507660-1420797981000"
Cache-Control: public, max-age=1382400
Last-Modified: Fri, 09 Jan 2015 10:06:21 GMT
Vary: Accept-Encoding
Via: 1.1 vegur
CF-Cache-Status: MISS
Expires: Wed, 28 Jan 2015 10:59:21 GMT
Server: cloudflare-nginx
CF-RAY: 1a78d818b4af0b81-LHR
Run Code Online (Sandbox Code Playgroud)
令我困惑的是,无论我做了多少次请求,它总是返回
CF-Cache-Status: MISS
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?
nginxexpires
指令设置 2 个标头,Expires
并且Cache-Control
:
配置:
expires 1d;
Run Code Online (Sandbox Code Playgroud)
标题:
Expires: Tue, 24 Nov 2020 12:51:31 GMT
Cache-Control: max-age=86400
Run Code Online (Sandbox Code Playgroud)
我想保留Expires
标题,但也设置Cache-Control
为public, max-age=86400, immutable
. 但这会产生双Cache-Control
标头:
配置:
expires 1d;
add_header Cache-Control "public, max-age=86400, immutable"
Run Code Online (Sandbox Code Playgroud)
标题:
Expires: Tue, 24 Nov 2020 12:57:53 GMT
Cache-Control: max-age=86400
Cache-Control: public, max-age=86400, immutable
Run Code Online (Sandbox Code Playgroud)
我不能只使用add_header Expires ...
,因为它需要未来的确切时间,而不仅仅是秒数。
我尝试使用more_set_headers
ngx_headers_more模块,但指令Cache-Control
设置的标头expires
仍然存在。
有没有办法将正确的Expires
标头与Cache-Control
set to结合起来immutable
?