【问题标题】:Apache Mod Expires, how to Debug?Apache Mod 过期,如何调试?
【发布时间】:2017-12-08 00:17:50
【问题描述】:

我的目标:让我服务器上的 javascript 始终从我的服务器中提取,并且不允许缓存。

我的操作系统:Ubuntu

我的方法:(跟随https://www.digitalocean.com/community/tutorials/how-to-configure-apache-content-caching-on-ubuntu-14-04#setting-expires-and-caching-headers-on-content

  • sudo a2enmod 过期
  • sudo a2enmod 标头
  • 将以下内容添加到我的(已经证明可以正常工作的).htaccess 文件中:

    • ExpiresActive On ExpiresByType text/javascript "access plus 1 seconds"

我的结果:HTTP 标头完全没有变化。用户仍然抱怨他们的缓存文件已过期。

我的 .htaccess 文件,它的全部内容是:

    RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
RewriteCond %{DOCUMENT_ROOT}/maintenance.enable -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /maintenance.html [R=503,L]
ErrorDocument 503 /maintenance.html
ExpiresActive On
ExpiresByType text/javascript "access plus 1 seconds"
#ExpiresByType  text/js “access plus 1 seconds”

我知道它正在读取 .htaccess 代码,因为我的维护模式代码仍然有效。我进一步知道它正在阅读它,因为我与 500 个内部服务器错误作斗争,直到我的 ExpiresByTypes 语法正确。

我什至如何开始调试这个问题?

【问题讨论】:

  • 为你的 js 文件设置了哪些 Cache-Control-Headers?
  • 不确定我该如何开始回答这个问题?除了那里显示的内容外,我没有进行任何配置。

标签: javascript apache .htaccess caching mod-expires


【解决方案1】:

问题中未显示 HTTP 响应标头,但 Apache 的默认 mime.types 将 *.js 映射到 application/javascript 而不是您匹配的文本/javascript。

application/javascript              js

至少,复制应用程序/javascript 的配置!

【讨论】:

  • 哦,天哪,做到了。谢谢!我尝试了一堆不同的 mime 类型,而我选择的那个是唯一没有导致 500 个服务器错误的... /跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 2016-08-05
相关资源
最近更新 更多