javascript - 使用 mod_headers 或 mod_expires 使图像不可缓存

标签 javascript apache

我的问题与前段时间讨论过的一篇帖子有关: 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/

相关文章:

javascript - 无法使用 Java 在 Selenium WebDriver 中定位/填充文本框

javascript - Web 扩展身份 token 返回 403

javascript - 根据数组脚本检查文本框中的值不起作用

Apache 删除请求

javascript - 未捕获的类型错误 : Cannot read property of undefined when trying to receive an object scecific variable form a 2D array

javascript - 隐藏 KendoUI 下拉列表

linux - 如何通过 svn post-commit hook 运行 svn update

android - Android 上的 HttpClient 4.3.3

php - OPENSSL file_get_contents() : Failed to enable crypto

Apache 反向代理: how to forward proxy server's HTTP_HOST