【问题标题】:Make images non-cacheable using mod_headers or mod_expires使用 mod_headers 或 mod_expires 使图像不可缓存
【发布时间】:2011-10-14 11:43:40
【问题描述】:

我的问题与前段时间讨论的一篇帖子有关: how to clear or replace a cached image

让我介绍一下我在做什么... 我使用 JavaScript 创建一个动画,每 5 分钟更新一次。我使用在图像名称中添加时间戳的技巧,所以我的图像类似于:image-1-no-cache.png?d=131415135135

我用它来确保更新。如果我不区分名称,浏览器将不会更新任何内容,因为图像将存储在缓存中,浏览器不会意识到它们已更改。 我遇到的问题是图像是连续存储的。我通过 JavaScript 丢失了引用,我不知道如何删除它们。几个小时后,缓存中充满了图像,并且网站占用了大量 RAM。

我现在要做的是为图像设置过期日期。我启用了模块 mod_headers 和 mod_expires 并更改了我的 .htaccess 文件尝试不同的事情:

<Files ~ ".*no-cache\.png?=*">
   Header set Cache-control "no-cache"
</Files>

<FilesMatch ".*no-cache.png.*">
     ExpiresActive On      
   ExpiresDefault A300
</FilesMatch>

没有任何作用。这个想法是使文件 -no-cache.png?=. 不可缓存。 为什么我没有得到好的结果?我错过了什么?

这是第一次尝试做类似的事情,我很困惑。任何帮助将不胜感激。谢谢 ! 云

【问题讨论】:

    标签: javascript apache


    【解决方案1】:

    ?something 添加到图像不会使其不可缓存。它会创建 new URL,该 URL 可以缓存,并且不会影响其他 URL,因此所有其他 ?versions 也会保留在缓存中。

    <Files ~ "no-cache\.png">
       Header set Cache-control "max-age=10, must-revalidate"
    </Files>
    

    这将告诉 Apache 将标题添加到文件名中任何位置带有no-cache.png 的所有文件(不需要.*)。 AFAIK 这匹配文件系统名称,而不是 URL,因此查询字符串永远不会存在)。

    标头说缓存最多 10 秒,并在每次使用前与服务器检查新鲜度。

    【讨论】:

      【解决方案2】:

      这不起作用!

      使用您的配置,浏览器应在 10 秒后重新验证(=更新)图像,但不会发生这种情况。

      我认为最好的选择是设置“Header set Cache-Control "no-store"”。 如果我在 JavaScript Image 数组中引用了所有图像,则不需要使用缓存。目前,这是我找到的最佳选择。

      还是谢谢你, 韵

      【讨论】:

        猜你喜欢
        • 2012-04-13
        • 1970-01-01
        • 2017-02-05
        • 2012-04-22
        • 2011-07-06
        • 2020-09-23
        • 2012-02-06
        • 2014-01-26
        • 2018-05-05
        相关资源
        最近更新 更多