firefox决定不缓存什么?

时间:2011-09-10 14:23:35

标签: ruby-on-rails caching browser

我正在使用firebug从我的rails应用程序查看网络流量,我发现css和javascript文件没有被缓存。在页面中,有类似的内容:

<script src="/javascripts/prototype.js?1315256241" type="text/javascript"></script>

并且好像?1315256241会导致FF不缓存该项目。但是?1315256241是几年前推出的Rails的“功能”。所以我很惊讶它阻止了项目被缓存,但没有人询问或修复它。

我在FF论坛上问同样的问题,也许在Rails论坛上无济于事。似乎没有人理解我的问题或其中的观点。所以我想我会在这里试试。

我的问题是“1315256241后缀(查询)是否阻止FF缓存页面?”

如果确实如此,大多数人在Rails中做了什么来防止这种情况?

2 个答案:

答案 0 :(得分:1)

我是否正确地想到了之后的数字?是一个随机生成的数字? 此方法有时粗略地用于 阻止 缓存

如果是这种情况,那么Firefox每次认为它请求不同的文件时都不会缓存,例如见下文。

  

/javascripts/prototype.js?1315256241

     

/javascripts/prototype.js?1315256242

     

/javascripts/prototype.js?1315256243

     

/javascripts/prototype.js?1315256244

等等

我会考虑删除查询字符串中的数字,因为它看起来并不是必需的。我不是rails dev,所以有兴趣看看你对这个“功能”的意思。

答案 1 :(得分:0)

如果您查看AssetTagHelper的文档并查找“自定义资产路径”,您会找到解释为什么代码会将时间戳与所需的更改添加到我的Apache配置以利用此功能的原因特征

  

默认情况下,Rails会将资产的时间戳附加到所有资产路径。这允许您为将来的资产设置缓存到期日期,但仍然可以通过简单地更新文件立即使其无效(并因此更新时间戳,然后更新URL,因为时间戳是其中的一部分,这反过来破坏缓存)。

     

您使用的Web服务器负责设置您需要利用此功能的缓存资产的远期到期日期。这是Apache的一个例子:

# Asset Expiration
ExpiresActive On
<FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
  ExpiresDefault "access plus 1 year"
</FilesMatch>

(文件继续......)