【发布时间】:2011-10-11 23:56:09
【问题描述】:
为了防止出现问题,当我更新 CSS/JS 媒体文件并且浏览器不请求新版本时,因为它们缓存了这些文件,我使用了这个解决方案:https://github.com/jaddison/django-cachebuster,将 ?
XXX.255.115.60 - - [24/Jul/2011:04:17:25 -0700] "GET /media/main.css?333900240611 HTTP/1.1" 304 172 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
XXX.255.115.60 - - [24/Jul/2011:04:17:26 -0700] "GET /media/main.js?270101180511 HTTP/1.1" 304 173 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
XXX.255.115.60 - - [24/Jul/2011:04:17:34 -0700] "GET /media/main.css?333900240611 HTTP/1.1" 304 172 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
XXX.255.115.60 - - [24/Jul/2011:04:17:35 -0700] "GET /media/main.js?270101180511 HTTP/1.1" 304 173 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
XXX.255.115.60 - - [24/Jul/2011:04:17:44 -0700] "GET /media/main.css?333900240611 HTTP/1.1" 304 172 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
XXX.255.115.60 - - [24/Jul/2011:04:17:44 -0700] "GET /media/main.js?270101180511 HTTP/1.1" 304 173 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
当然,这会使我的网站变慢。是否可以仅在 .css?... 之后的时间戳更改时强制浏览器更新文件? 谢谢!
更新: 以下是响应和请求的示例:
请求
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18
Accept text/css,*/*;q=0.1
Accept-Language en-gb,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Referer
DNT 1
Connection keep-alive
If-Modified-Since Fri, 24 Jun 2011 05:39:33 GMT
If-None-Match "8ed02f1-a21-4a66ea04f2f40"
回应
Date Sun, 24 Jul 2011 12:28:21 GMT
Server Apache
Connection Keep-Alive
Keep-Alive timeout=2, max=99
Etag "8ed02f1-a21-4a66ea04f2f40"
初始响应
Date Sun, 24 Jul 2011 12:51:05 GMT
Server Apache
Last-Modified Fri, 24 Jun 2011 05:39:33 GMT
Etag "8ed02f1-a21-4a66ea04f2f40"
Accept-Ranges bytes
Content-Length 2593
Keep-Alive timeout=2, max=99
Connection Keep-Alive
Content-Type text/css
【问题讨论】:
-
这样一个请求的响应头是什么样子的?
-
Gumbo,我用这些细节更新了一个原始问题。
-
对初始请求的响应如何?
-
您在谈论获取页面的响应(不是页面组件?)它看起来像这样 日期 Sun, 24 Jul 2011 12:44:45 GMT 服务器 Apache Vary Cookie,Accept-Encoding Set-Cookie csrftoken=...;最大年龄=31449600;路径=/ sessionid=...; expires=星期日,2011 年 8 月 7 日 12:44:46 GMT;最大年龄=1209600; Path=/ Content-Encoding gzip Content-Length 2294 Keep-Alive timeout=2, max=100 Connection Keep-Alive Content-Type text/html; charset=utf-8
-
我的意思是在请求被缓存之前的响应。您显示的请求/响应已经是验证已缓存响应的条件请求。
标签: apache caching browser client-side