2012-03-19 51 views
1

我在这里有一个问题。如何告诉浏览器重新验证缓存

我正在使用ETag来验证浏览器缓存。但问题是,当我做window.location.pathname时,它倾向于从缓存中获取页面。但是当我在页面上执行F5时,它会向服务器发送重新验证请求。

即使当我做window.location.pathname时,我想重新验证缓存。或者有更好的方法来做到这一点。

这是我的请求和响应头。

Request URL:http://127.0.0.1:5555/monyog-license.html 
Request Method:GET 
Status Code:200 OK 
Request Headers 
Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:en-US,en;q=0.8 
Cache-Control:max-age=0 
Connection:keep-alive 
Cookie:SessionID=fe5b68c5c1f377a063462e59a67efb90; Username=admin; IsAdmin=1; HasServerEdit=1 
Host:127.0.0.1:5555 
Pragma:no-cache 
Referer:http://127.0.0.1:5555/monyog-login.html 
User-Agent:Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.630.0 Safari/534.16 
Response Headers 
Cache-Control:max-age=3600, must-revalidate 
Content-Encoding:gzip 
Content-Length:1401 
Content-type:text/html; charset=utf-8 
ETag:1331890257_3961 
Expires:Tue, 19 Mar 2013 07:34:04 GMT 
Last-Modified:Fri, 16 Mar 2012 09:30:57 GMT 

回答

1

这样的事情如何:window.location.pathname + '?' + (+(new Date))

1

你在Apache上运行吗?如果是这样,你可能想使用.htaccess来控制缓存。以下是一些示例:

# 1 YEAR 
<filesMatch "\.(html|htm|php|cgi|pl)$"> 
Header set Cache-Control "max-age=29030400, public" 
</filesMatch> 

# 1 WEEK 
<filesMatch "\.(html|htm|php|cgi|pl)$"> 
Header set Cache-Control "max-age=604800, public" 
</filesMatch> 

# 3 HOUR 
<filesMatch "\.(html|htm|php|cgi|pl)$"> 
Header set Cache-Control "max-age=10800" 
</filesMatch> 

# NEVER CACHE 
<filesMatch "\.(html|htm|php|cgi|pl)$"> 
Header set Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate" 
</filesMatch> 

您可以通过将其添加到行来设置所需的任何文件类型。只要确保每个文件类型都用|分隔就像上面的例子一样。

祝你好运!

最佳,

辛西娅