301重定向和缓存:如何删除旧缓存?

5
经过很多帮助和研究,我终于通过.htaccess文件成功实现了301重定向,但是我发现除非我在浏览器上点击“刷新”按钮,否则它不会重定向页面,因为它只读取缓存的网站。
我尝试关闭所有浏览器,插入.htaccess文件,然后再打开一个新的浏览器,但它仍然打开缓存的网站。我猜想大多数客户都不会费心刷新页面,如果他们不这样做,就需要相当长的时间才能发现确实有一个新页面!
有什么想法吗?谢谢!
-Karl
编辑:我刚刚想到在我们当前主页上放置一个链接,上面写着“点击此处查看我们的新网站!”,点击链接将刷新页面,进而启动301重定向。有人能想到任何负面影响吗?
2个回答

2
卡尔,
我发现检查缓存头信息最好的方法是使用 Live HTTP Headers Firefox插件。
以下是它对你主页的说法:
HTTP/1.x 200 OK
Date: Fri, 06 Nov 2009 15:16:57 GMT
Server: Apache
Last-Modified: Mon, 12 Oct 2009 16:52:05 GMT
Etag: "85dcc1-1386-4ad35eb5"
Accept-Ranges: bytes
Content-Length: 4998
Keep-Alive: timeout=10, max=99
Connection: Keep-Alive
Content-Type: text/html

如上所述,问题在于ETag。一个快速(类Unix)的解决方法可能是:find /var/www/htdocs -type f|xargs touch,这将更改您www目录中每个文件的修改时间。
然而,这取决于您的Apache实例配置如何生成ETag值。这里有一个 关于如何设置Apache缓存的很棒的小技巧
至于您添加链接的建议,我认为那行不通。您无法远程强制刷新浏览器页面,并且如上所述,问题在于ETags,而您的解决方案不会改变它们。

0

请稍等一会儿。大多数用户缓存将在几个小时内过期,除非您设置服务器以使用异常长的缓存提示来提供页面。

如果您现在正在提供页面,则可以设置标头,以便客户端不缓存它。有关此内容,请参见以下问题:

如何告诉浏览器不要缓存?


有没有办法检查缓存会持续多久?例如,我关心的网站是www.mastercontrols.com。 - Karl
您的服务器正在使用ETag在页面被用户缓存后发送304未修改状态码。如果您遇到缓存问题,请尝试修改文档,使其在磁盘上的最后修改日期更近。 - Paul McMillan
那你建议只是进入每个文件并更改一些小的内容然后保存吗?另外,你是如何发现服务器发送了304的呢? - Karl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接