Web 服务器静态资源未被主机缓存

Web 服务器静态资源未被主机缓存

我的 Web 服务器的带宽消耗会定期出现高峰:

日志显示这些来自同一个用户:

(ip) - - [31/Aug/2011:20:55:31 -0400] "GET /train/16/32462 HTTP/1.1" 200 12909
(ip) - - [31/Aug/2011:20:55:32 -0400] "GET /css/global.1314709741.css HTTP/1.1" 200 9388
(ip) - - [31/Aug/2011:20:55:32 -0400] "GET /css/battle.1307899664.css HTTP/1.1" 200 1567
(ip) - - [31/Aug/2011:20:55:32 -0400] "GET /js/jquery.pulse.1313994229.js HTTP/1.1" 200 2534
(ip) - - [31/Aug/2011:20:55:32 -0400] "GET /js/jquery-1.6.2.min.1309653547.js HTTP/1.1" 200 91887
(ip) - - [31/Aug/2011:20:55:32 -0400] "GET /js/common.1313994229.js HTTP/1.1" 200 9128
(ip) - - [31/Aug/2011:20:55:32 -0400] "GET /js/battle.1313994229.js HTTP/1.1" 200 24155
(ip) - - [31/Aug/2011:20:55:32 -0400] "GET /js/prototype.1283487121.js HTTP/1.1" 200 140186
(ip) - - [31/Aug/2011:20:55:44 -0400] "GET /train/16/36685 HTTP/1.1" 200 13210
(ip) - - [31/Aug/2011:20:55:44 -0400] "GET /css/global.1314709741.css HTTP/1.1" 200 9388
(ip) - - [31/Aug/2011:20:55:44 -0400] "GET /css/battle.1307899664.css HTTP/1.1" 200 1567
(ip) - - [31/Aug/2011:20:55:44 -0400] "GET /js/jquery.pulse.1313994229.js HTTP/1.1" 200 2534
(ip) - - [31/Aug/2011:20:55:44 -0400] "GET /js/jquery-1.6.2.min.1309653547.js HTTP/1.1" 200 91887
(ip) - - [31/Aug/2011:20:55:44 -0400] "GET /js/common.1313994229.js HTTP/1.1" 200 9128
(ip) - - [31/Aug/2011:20:55:44 -0400] "GET /js/battle.1313994229.js HTTP/1.1" 200 24155
(ip) - - [31/Aug/2011:20:55:44 -0400] "GET /js/prototype.1283487121.js HTTP/1.1" 200 140186

如您所见,对静态资源(css,js)的请求以完整的状态返回200 OK,而它们应该返回简短的304 Not Modified响应(或者根本不被请求)。

是什么原因造成的?我能做些什么来解决它?

答案1

是什么让您认为请求不应该返回200 OK?日志中没有提供任何信息表明客户端发送了适当的缓存标头以允许您的服务器回复其他任何内容。

问题可能出在您这边,因为您没有发送好的缓存标头,也可能是客户端没有发回相关的缓存标头。另外,别忘了,IP 地址并不唯一地映射到单个浏览器;您可能有多个来自同一 NATted 地址的用户都向您的网站发出请求。

相关内容