代码之家  ›  专栏  ›  技术社区  ›  Tom Savage

阻止浏览器缓存链接文件

  •  1
  • Tom Savage  · 技术社区  · 15 年前

    但是,在尝试下载生成的文件时,浏览器有时会检索到一个缓存版本,该版本通常与最新版本不同(因此您得到的是与上次相同的文档,而不是您请求的文档)。

    我通过基于当前时间戳为每个生成的文件指定一个唯一的名称来解决这个问题,但是这会在目录中产生大量的混乱,需要定期清理。理想情况下,我想标记这个文件,这样浏览器将不会缓存它,并将获得最新版本的每一次。我怎样才能做到这一点?

    4 回复  |  直到 15 年前
        1
  •  5
  •   Pekka    15 年前

    除了可以向URL添加随机GET字符串(通常是最简单的方法)之外,还可以通过发送正确的头来解决这个问题。

    因为你正在生成 静止的 .htaccess 文件。必须这样:

    <FilesMatch "\.(rtf)$">
    Header set Cache-Control "no-store"
    </FilesMatch>
    
        2
  •  4
  •   Palantir    15 年前

    最简单的方法?而不是链接到 http://yoursite.com/file.rtf ,链接到 http://yoursite.com/file.rtf?<?=time() ?>。这将附加一个查询字符串参数,该参数在每次客户端请求时都会发生变化,因此不会被缓存。

        3
  •  1
  •   jevakallio    15 年前

    您可以将当前时间值标记到您提供的文件

    …文件.rtf?15072010141000

        4
  •  0
  •   Community CDub    8 年前

    虽然Pekka建议的使用no-cache头的简单解决方案是可行的,但是如果同一个文件被多次下载,您将失去缓存的潜在好处。

    How to use HTTP cache headers with PHP

    推荐文章