在使用 Nginx 作为 Web 服务器的过程中,遇到了一个关于浏览器缓存处理的问题。具体配置如下:
location ~* \.(css|js|apk)$ {
root /usr/local/resources;
expires 12h;
}
通过 Chrome 访问网站时,CSS 和 JS 文件能够正常从内存或磁盘缓存中读取,状态码为 200。对于 50 个请求,总耗时为 1.03 秒,传输数据量为 17 KB。
然而,当使用 Firefox 访问相同的页面时,尽管也是 50 个请求,但总耗时却达到了 3 到 4 秒,返回的状态码为 304,表明浏览器未从缓存中读取这些文件,而是重新请求了服务器。每次请求的响应大小约为 1.87 MB。
以下是 Firefox 的请求头信息:
Accept: text/css,*/*;q=0.1
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Cache-Control: max-age=0
Connection: keep-alive
COOKIE: ID=d450d6f9-434b-4…031709a|1548209034|1548208680
Host: x.xxxx.com
If-Modified-Since: Mon, 21 May 2018 01:41:39 GMT
Referer: https://x.xxxx.com/index.html
User-Agent: Mozilla/5.0 (Macintosh; Intel …) Gecko/20100101 Firefox/57.0
Firefox 的响应头信息如下:
cache-control: max-age=864000
date: Wed, 23 Jan 2019 02:03:54 GMT
etag: "5b0223d3-37e2"
expires: Sat, 02 Feb 2019 02:03:54 GMT
last-modified: Mon, 21 May 2018 01:41:39 GMT
server: Tengine
set-COOKIE: SERVERID=3e75f47fc0404902213b8…|1548209034|1548208680;Path=/
X-Firefox-Spdy: h2
问题可能在于 Firefox 的缓存机制与 Chrome 不同,或者 Nginx 的配置需要进一步调整以更好地支持 Firefox 的缓存策略。建议检查 Firefox 的缓存设置,确保其缓存功能未被禁用,并考虑优化 Nginx 配置中的缓存控制指令,例如增加 `add_header Cache-Control` 指令来明确指定缓存策略。