【问题标题】:HTML link that bypasses cache?绕过缓存的 HTML 链接?
【发布时间】:2011-10-27 02:54:36
【问题描述】:

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

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

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

&lt;a bypassCache href=""&gt; 这样的好东西只是一厢情愿。

【问题讨论】:

    标签: html caching browser hyperlink


    【解决方案1】:

    在超链接后面加一个随机数,如&lt;a href="http://example.com/myfile.txt?rand=12312321321"&gt;View!&lt;/a&gt;

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

    【讨论】:

    • 但我不是总是更新文件的人。这意味着我必须向编辑文件的每个人授予访问权限并指示他们生成随机数
    【解决方案2】:

    美好的事情就像是一厢情愿。

    确实,您可以从链接中执行一些操作:添加随机 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>
    

    【讨论】:

    • 不!切勿添加随机参数以避免缓存。如果您使用像 Varnish 这样的缓存代理,那么您将用永远不会使用的无用条目填充缓存。您应该使用 Cache-Control 和 Pragma 标头参数。
    • 在上面的例子中,将 替换为
    【解决方案3】:

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

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

    【讨论】:

    • 幸运的是我已经在使用 php,所以你的 time() 工作得非常好
    【解决方案4】:

    您可以在服务器级别解决您的问题。为符合您要求的 txt 资源(或特定资源)设置特殊的到期日期。 如果您使用 apache,您可以在此处阅读有关 apache 的 mod_expiry 的信息

    【讨论】:

      【解决方案5】:

      随便放

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

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

      【讨论】:

        猜你喜欢
        • 2021-10-23
        • 2010-09-26
        • 2021-01-29
        • 1970-01-01
        • 1970-01-01
        • 2015-02-13
        • 2010-10-19
        • 2010-10-14
        • 1970-01-01
        相关资源
        最近更新 更多