我的问题与前段时间讨论过的一篇帖子有关: 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?=. 不可缓存。 为什么我没有得到好的结果?我错过了什么?
这是第一次尝试做类似的事情,我很困惑。任何帮助将不胜感激。谢谢 ! 韵
最佳答案
向图像添加 ?something
不会使其不可缓存。它创建可以缓存的新 URL,并且它不影响其他 URL,因此所有其他 ?versions
也保留在缓存中。
<Files ~ "no-cache\.png">
Header set Cache-control "max-age=10, must-revalidate"
</Files>
这将告诉 Apache 向文件名中任何位置带有 no-cache.png
的所有文件添加 header (不需要 .*
)。 AFAIK 这匹配文件系统名称,而不是 URL,所以查询字符串永远不会存在)。
header 表示最多缓存 10 秒,并在每次使用前检查服务器的新鲜度。
关于javascript - 使用 mod_headers 或 mod_expires 使图像不可缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6848669/