
如题。用 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 @fourstring 没有的话就加一个缓存时限 |
11 fourstring OP @402645707 好的,我试试 |
12 fourstring OP @402645707 问题解决,非常感谢! |