apache - 控制服务器上自定义文件的缓存过期

标签 apache .htaccess http server

我们有从我们的服务器提供给 native Windows 操作系统应用程序的文件。这些文件每分钟都可能更改,因此我们需要确保用户下载的是最新文件。

我们发现使用可移植 WiFi 的用户往往会收到较旧的文件。因此,我们正在更改某些文件的服务器 .htaccess 文件过期时间。

  • 我们提供自定义文件类型 (.ebc),文件内容以纯文本形式通过 HTTP 发送。在这种情况下,我们应该使用 ExpiresByType text/ebc "access 1 minute" 吗?
  • 更改 .htaccess 缓存控制会影响可移植 Wifi 缓存还是只会影响浏览器?
  • mod_expires/mode_headers occur 代码应该在重定向和重写之前出现吗?我之前发现您应该先执行某些 .htaccess 代码操作(例如将重定向放在文件顶部)。

这是我的代码:

RedirectMatch  (?i)^/wp-content/uploads/2014/10/a.exe http://www.website.com/wp-content/uploads/2014/10/b.exe

## EXPIRES CACHING  Should we place this before mode_rewrite or after? ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/ebc "access 1 minute"
</IfModule>
## EXPIRES CACHING ##

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

最佳答案

这里有 3 个问题,所以我会尝试回答它们。

  1. 我们提供自定义文件类型 (.ebc),文件内容以纯文本形式通过 HTTP 发送。在这种情况下我们应该使用 ExpiresByType text/ebc access 1 minute

    这应该没问题,只要您在服务器上正确设置了 text/ebc mime 类型。

  2. 更改 .htaccess 缓存控制会影响可移植 Wifi 缓存还是只会影响浏览器

    我真的不知道“可移植 Wifi 缓存”是什么。这些 header 仅针对浏览器。如果自定义应用程序正在下载这些文件,它可能会实现自己的缓存,因此这些 header 可能会被忽略。

  3. mod_expires/mod_headers 代码应该出现在重定向和重写之前吗?

    我会把它放在重定向之前,但只是从逻辑的角度来看。这些不像 RewriteRules,认为它们是单独评估的。

此外,我要补充一点,缓存很困难,一旦文件离开您的服务器,就很难强制更新。不同的浏览器有不同的行为方式,我遇到过在一个地方工作而不在另一个地方工作的配置。

我还会考虑其他两种方法来解决您正在尝试的问题。

首先,根本不要缓存你的文件:

<FilesMatch "\.ebc$">
  Header set Cache-Control no-cache
  Header set pragma no-cache
</FilesMatch>

其次考虑实现缓存清除机制。如果文件是从某个地方链接的,请尝试并确保每次文件更改时更改链接(通常带有时间戳的查询字符串就足够了)。显然,您随后需要确保包含链接的内容也未被缓存。

关于apache - 控制服务器上自定义文件的缓存过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26557048/

相关文章:

java - 导出 PDF 时出错,FOP "fo:list-item"不是 "fo:list-item-body"的有效子级!

apache - 仅针对 nginx 上的特定 url 使用 https 重定向

php - 使用 Linux 服务器 shell 命令按计划运行 php 脚本

apache - 将子域转发到子文件夹并保留子文件夹的 .htaccess mod_rewrite 规则

.htaccess - htaccess 重定向子域

.htaccess - 如何使用 htaccess 在 url 中使用最后一个可选的尾随斜杠删除 txt 扩展名的需要

api - 如何在客户端 javascript 中使用 Grafana Http API

ios - 如何快速从 HTTP Get 获取状态码?

apache - 使用水槽将数据流传输到S3

php - HTTP header : Expires