我正在尝试刷新页面,但是想要使用缓存并且无法弄清楚如何执行此操作。有两种情况:
如果我点击URL栏并点击回车(或从其他地方访问该页面),它会从缓存中重新加载页面/图像。的 GREAT!
如果我点击刷新按钮或使用Javascript刷新页面,它会再次抓取所有图像并永远占用。 不太好!
我尝试过:top.location.reload(false);
和top.location.reload(true);
(我是在iFrame中发送的)并且都没有使用缓存。我正在避免使用location
,因此它不会在浏览器历史记录中结束两次。
问题:如何使用缓存图像重新加载页面?是否有不同的javascript函数或这是mod_expires问题?
提前感谢您的帮助!
编辑:(来自Chrome:开发者工具的信息)
编辑2 :(来自图片的标题,safari:开发人员工具)
Javascript:top.location.reload(false); (没有缓存!)
Status Code:304 Not Modified
Request Headers
Cache-Control:max-age=0
If-Modified-Since:Tue, 28 Jun 2011 07:13:17 GMT
If-None-Match:"104684ae-a7d-66e41d40"
Referer:http://getdirectus.com/dev/media.php
User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1
Response Headers
Cache-Control:max-age=157680000
Connection:Keep-Alive
Date:Tue, 28 Jun 2011 16:56:50 GMT
Etag:"104684ae-a7d-66e41d40"
Expires:Sun, 26 Jun 2016 16:56:50 GMT
Keep-Alive:timeout=5, max=94
Server:Apache/2.0.54
导航到页面:(使用缓存)
Status Code:200 OK
Response Headers**
Accept-Ranges:bytes
Cache-Control:max-age=157680000
Connection:Keep-Alive
Content-Length:2685
Content-Type:image/jpeg
Date:Tue, 28 Jun 2011 16:54:20 GMT
Etag:"104684ae-a7d-66e41d40"
Expires:Sun, 26 Jun 2016 16:54:20 GMT
Keep-Alive:timeout=5, max=99
Last-Modified:Tue, 28 Jun 2011 07:13:17 GMT
Server:Apache/2.0.54
答案 0 :(得分:5)
window.location.reload( false );
的{{3}}表示它将从缓存中加载。如果没有发生这种情况,那么您可能会看到浏览器错误。看看你是否可以在另一个浏览器中复制问题。
编辑(对于您的编辑):您看到了这种行为,因为您将来没有设置过期标头。您需要documentation。
答案 1 :(得分:1)
window.location.href = window.location.href;
如果地理位置包含#
,请务必在设置href
之前将其删除。
答案 2 :(得分:0)
如果您想在客户端启用缓存,请注意发送Expire
标头,例如mod_expires
答案 3 :(得分:0)
使用this site,我只获得了location.refresh(true);
的绿色图片。 location.refresh();
或location.refresh(false);
我得到了红色图片。工作正常,我想。
答案 4 :(得分:0)
这里有两件事需要考虑:
1:请求...浏览器 - >服务器
2:响应...服务器 - >浏览器
当您刷新页面时,您无法绕过浏览器向服务器请求页面资源。
您可以做的是确保服务器发送最小响应。
实现此目标的最佳方法是在响应标头中使用etags。这样浏览器就会向服务器发送if-none-match
请求,如果没有修改任何内容,则会收到304 Nothing changed
响应。
答案 5 :(得分:0)
您的第二个请求是通过手动刷新页面启动的。执行此操作时,浏览器会向请求发送额外的cache-control:max-age=0
标头。这是304(未修改)的来源。
如果您在站点内导航(使用链接),浏览器将继续使用其缓存。