热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nginx配置下Chrome和Firefox对静态资源缓存处理差异

在使用Nginx作为服务器时,发现Chrome能正确从缓存中读取CSS和JS文件,而Firefox却无法有效利用缓存,导致加载速度显著变慢。

在使用 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` 指令来明确指定缓存策略。


推荐阅读
author-avatar
哎哟不错哦凉皮
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有