Nat*_*ong 6 php apache caching
在PHP中,我试图从Rails剧本中窃取一个页面(请参阅此处的 "使用资产时间戳" ):
默认情况下,Rails会将资产的时间戳附加到所有资产路径.这允许您为将来的资产设置缓存过期日期,但仍然可以通过简单地更新文件立即使其无效(并因此更新时间戳,然后更新URL,因为时间戳是其中的一部分,反过来破坏缓存).
您使用的Web服务器负责设置您需要利用此功能的缓存资产的远期到期日期.这是Apache的一个例子:
# Asset Expiration
ExpiresActive On
<FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
ExpiresDefault "access plus 1 year"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
如果查看Rails页面的源代码,您将看到它们的含义:样式表的路径可能是"/stylesheets/scaffold.css?1268228124",最后的数字是文件上次更新时的时间戳.
所以它应该像这样工作:
scaffold.css?1268228124可以缓存一年 - 它不会改变.'scaffold.css?1268228124由于数字更改,不再调用该文件.我认为这很棒.所以我写了一个函数,用函数表和javascript标签添加时间戳附加到文件名,然后我用上面的语句配置了Apache.
现在:我如何判断缓存和缓存清除是否有效?
我正在用Firebug的两个插件检查我的页面:Yslow和Google Page Speed.两者似乎都说我的文件正在缓存:Yslow中的"添加过期标题"和"页面速度"中的"利用浏览器缓存"都被选中.
但是当我查看Page Speed Activity时,我看到很多请求并等待,没有'缓存命中'.
如果我更改样式表并重新加载,我会立即看到更改.但我不知道是不是因为浏览器从未缓存过,或者因为缓存被破坏了.
我该怎么说?
如果有人有兴趣,我只是写了一篇博客文章解释细节.
| 归档时间: |
|
| 查看次数: |
2954 次 |
| 最近记录: |