我的问题与前一段时间讨论的一篇文章有关: how to clear or replace a cached image
让我介绍一下我在做什么...... 我使用JavaScript创建一个每5分钟更新一次的动画。我使用向图像名称添加时间戳的技巧,所以我的图像如下:image-1-no-cache.png?d = 131415135135
我用它来确保更新。如果我没有区分名称,浏览器将不会更新任何内容,因为图像将存储在缓存中,浏览器将不会意识到它们已更改。 我遇到的问题是图像是连续存储的。我通过JavaScript丢失了引用,我不知道如何删除它们。几个小时后,缓存中充满了图像,网站占用了大量内存。
我现在要做的是为图像设置过期日期。我启用了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?=。不可缓存。 为什么我没有取得好成绩?我错过了什么?
这是第一次尝试做类似的事情,我很困惑。任何帮助将不胜感激。谢谢 ! 芸
答案 0 :(得分:0)
向图片添加?something
不会使其不可缓存。它会创建新网址,该网址可以可缓存,并且不会影响其他网址,因此其他所有?versions
也会保留在缓存中。
<Files ~ "no-cache\.png">
Header set Cache-control "max-age=10, must-revalidate"
</Files>
这将告诉Apache将标头添加到文件名中任何位置no-cache.png
的所有文件中(不需要.*
)。 AFAIK这匹配文件系统名称,而不是URL,因此查询字符串永远不会存在。
标题表示缓存最多10秒,并在每次使用前检查服务器的新鲜度。
答案 1 :(得分:0)
这不起作用!
使用您的配置,浏览器应在10秒后重新验证(=更新)图像,但这不会发生。
我认为最好的选择是设置“Header set Cache-Control”no-store“”。 如果我拥有JavaScript Image数组中引用的所有图像,则不需要使用缓存。目前,这是我找到的最佳选择。
无论如何,谢谢你, 芸