绕过缓存的HTML链接?

时间:2011-08-15 07:47:23

标签: html caching browser hyperlink

我有一个链接到我网站的文件,如

<a href="http://example.com/myfile.txt>View!</a>

但是,此文件经常更改,单击链接时,浏览器会加载文件的缓存版本,而不是实际文件。 有没有办法点击该链接会绕过该页面的缓存?

<a bypassCache href="">这样的好东西会是一厢情愿的想法。

5 个答案:

答案 0 :(得分:23)

  

好像是一厢情愿的想法。

确实,您可以在链接中执行以下操作:添加随机GET参数。

<a href="http://example.com/myfile.txt?a=193834923283943842923">View!</a>

您可以使用JavaScript(或者当然是像PHP这样的服务器端脚本语言)来动态地执行此操作。

然而,最好的方法是在服务器端的第一个位置正确配置文本文件的缓存头。从Best way to disable client caching窃取标题信息,这样的.htaccess文件应该有效:

<Files myfile.txt>
FileETag None
<IfModule mod_headers.c>
Header unset ETag
Header set Cache-Control "store, no-cache, must-revalidate, post-check=0, pre-check=0"
Header set Pragma "no-cache"
Header set Expires "Sun, 19 Nov 1978 05:00:00 GMT"
</IfModule>
</FilesMatch>

答案 1 :(得分:3)

最好的方法是告诉apache /(web服务器)告诉浏览器不允许缓存该文件,如果你没有控制该服务器,你可以通过改变发送给它的参数来避免缓存,只需添加一些数字背后?,例如,当您创建链接时,这会使每个URL不同,因此浏览器将忽略缓存,但所有链接指向同一文件,只要服务器忽略额外参数。在php:

echo "<a href='http://example.com/myfile.txt?" . time() . "'>View!</a>"

答案 2 :(得分:3)

刚刚放

<meta http-equiv="expires" content="0">

进入目标页面的头部并再次检查

答案 3 :(得分:0)

在超链接后添加一个随机数,例如<a href="http://example.com/myfile.txt?rand=12312321321">View!</a>

每次加载页面时生成一个新的随机数。

答案 4 :(得分:0)

您可以在服务器级别解决问题。设置适合您要求的txt资源(或特定资源)的特殊到期日期。 如果你使用apache,你可以在这里阅读关于apache的mod_expiry