【问题标题】:Disable cache links issue禁用缓存链接问题
【发布时间】:2013-01-29 22:07:42
【问题描述】:

我有一个下载文件(.pdf、.rar、.jpg、...)的站点。 我的服务器有一个大问题,我认为它与 apache 有关:

例如我链接到 12.pdf 以供下载:

<a href="12.pdf">book</a>

它工作正常但问题: 我用另一个同名的文件更改了 12.pdf。下载新的 12.pdf 时,会下载以前的文件。 即使我从服务器中删除 12.pdf 并在我的页面中按 Ctrl+F5,当单击上面的链接时,12.pdf 下载开始并完全下载文件!而服务器上不存在名称为 12.pdf 的文件。 什么是问题? apache会缓存我的链接吗?如何解决这个问题? 我的服务器操作系统是 CentOS。

【问题讨论】:

    标签: apache webserver centos5


    【解决方案1】:

    一些解决方案,没有特定的顺序,可能会有所帮助。

    1. 创建一个哈希:

      更好的方法是通过引入来修改文件路径(或名称) 修改文件时将更改的哈希;然后在阿帕奇 配置,您可以剥离该值以获得正确的文件路径(或 姓名)。看这里: https://developers.google.com/speed/docs/best-practices/caching?hl=es-419#LeverageBrowserCaching

      通过http://www.immense.net/force-update-cached-files-images-favicon/#comment-18489

    2. 服务器标头。缓存也可以在服务器端根据响应头进行控制。

      例如,要强制缓存文件不超过 1 天, 你会发送:

      Cache-Control: max-age=86400, must-revalidate 
      

      对于测试版,如果你想 强制用户始终获取最新信息,您可以使用:

      Cache-Control: no-cache, must-revalidate
      

      通过https://stackoverflow.com/a/84846/1085891

    3. 使用GET 变量。添加版本号或任何值,这将强制浏览器提取最新文件。示例:

      <a href="12.pdf?ver=1.1">book</a>
      

      许多人不建议将这种技术用于任何可能需要缓存的文件(CSS、JavaScript 等)。

    4. &lt;FilesMatch&gt; directive

      &lt;FilesMatch&gt; 指令中包含.htaccess 行。为了 例如,这些行将阻止缓存以 “.htm”或“.html”,同时允许正常缓存 JPEG 文件:

      <FilesMatch "\.(htm|html)$">
        ExpiresActive On
        ExpiresDefault A1
        Header append Cache-Control must-revalidate
      </FilesMatch>
      

      通过http://support.tigertech.net/prevent-caching

    资源

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 2020-05-22
      • 2018-09-03
      • 2011-08-12
      • 2018-02-13
      • 1970-01-01
      相关资源
      最近更新 更多