如题。用 F12 可以看到服务端返回 304 状态码,问题是服务端文件已经更新了啊。
服务端是 nginx-1.11.8 ,配置文件里只指示浏览器缓存 js css 图片文件。
但是诡异的是,指示了缓存的这些文件却没有缓存,每次访问还是发送请求,服务端返回 200
下面是完整配置文件
server {
server_name n4l.pw www.n4l.pw;
listen 80;
location ^~ /.well-known/acme-challenge/ {
alias /home/wwwroot/challenges/;
try_files $uri =404;
}
location / {
rewrite ^/(.*)$ https://n4l.pw/$1 permanent;
}
}
server {
server_name n4l.pw www.n4l.pw;
listen 443 ssl http2 reuseport fastopen=3;
root /home/wwwroot/hexo;
server_tokens off;
ssl_ct on;
ssl_certificate /root/ssl/fourstring/n4l.pw.rsa.pem;
ssl_certificate_key /root/ssl/fourstring/n4l.pw.rsa.key;
ssl_ct_static_scts /root/ssl/fourstring/scts/rsa;
ssl_certificate /root/ssl/fourstring/n4l.pw.ecc.pem;
ssl_certificate_key /root/ssl/fourstring/n4l.pw.ecc.key;
ssl_ct_static_scts /root/ssl/fourstring/scts/ecc;
ssl_dhparam /root/ssl/fourstring/dhparams.pem;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_ecdh_curve secp384r1;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets on;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 10s;
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
add_header Public-Key-Pins 'pin-sha256="YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=";pin-sha256="Fbs+o+IxVNTHBpjNQYfX/TBnxPC+OWLYxQLEtqkrAfM=";max-age=2592000; includeSubDomains';
index index.html;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
}
(很多配置是学习了 ququ 大神的配置方法)
就我的了解来看,实际上就只有最后两段 location 是缓存,但是指定的这些缓存文件类型却没有被处理。
网站地址: https://n4l.pw 感谢您的回答。
1
lbp0200 2017-01-14 22:55:52 +08:00
expires 30d;
是什么? |
2
fashioncj 2017-01-14 23:32:04 +08:00
ctrl+F5 。。强制刷新就好了。。
或者。。 F12 清空缓存。。 |
3
fourstring OP @lbp0200 设置对应后缀名的资源的过期时间
|
4
fourstring OP @fashioncj 作为站长当然可以强制刷新,然而用户并不懂啊
|
5
402645707 2017-01-15 23:48:34 +08:00 via Android
这个和服务端缓存无关
你发给客户端的 max-age 太高了 |
6
fourstring OP @402645707 max-age ??那是 HSTS 和 HPKP 的缓存时间啊,跟页面无关吧?用的是 Preload List 的推荐值啊
|
7
402645707 2017-01-16 10:30:00 +08:00 via Android
@fourstring 建议 f12 看看 http header 中的 max-age
|
8
fourstring OP @402645707 我看了一下 header ,涉及到 max-age 的只有 HSTS 和 HPKP ,都是 HTTPS 的安全选项,和页面内容缓存无关
content-encoding:gzip content-type:text/html date:Mon, 16 Jan 2017 02:43:42 GMT etag:W/"587a2ebf-4a42" last-modified:Sat, 14 Jan 2017 13:59:27 GMT public-key-pins:pin-sha256="YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=";pin-sha256="Fbs+o+IxVNTHBpjNQYfX/TBnxPC+OWLYxQLEtqkrAfM=";max-age=2592000; includeSubDomains server:nginx status:200 strict-transport-security:max-age=31536000; includeSubDomains; preload vary:Accept-Encoding |
9
fourstring OP @402645707 也就是没有 cache-control 头
|
10
402645707 2017-01-16 11:14:57 +08:00 via Android 1
@fourstring 没有的话就加一个缓存时限
|
11
fourstring OP @402645707 好的,我试试
|
12
fourstring OP @402645707 问题解决,非常感谢!
|