当前位置:  开发笔记 > 编程语言 > 正文

我如何测试缓存和缓存清除?

如何解决《我如何测试缓存和缓存清除?》经验,为你挑选了0个好方法。

在PHP中,我试图从Rails剧本中窃取一个页面(请参阅此处的 "使用资产时间戳" ):

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

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

  # Asset Expiration
  ExpiresActive On
  
    ExpiresDefault "access plus 1 year"
  

如果查看Rails页面的源代码,您将看到它们的含义:样式表的路径可能是"/stylesheets/scaffold.css?1268228124",最后的数字是文件上次更新时的时间戳.

所以它应该像这样工作:

    浏览器说"给我这个页面"

    服务器说'在这里,顺便说一下,这个被调用的样式表scaffold.css?1268228124可以缓存一年 - 它不会改变.'

    在重新加载时,浏览器说'我不是要求那个css文件,因为我的本地副本仍然很好.'

    一个月后,您编辑并保存文件,这会更改时间戳,这意味着scaffold.css?1268228124由于数字更改,不再调用该文件.

    当浏览器看到它时,它说'我从未见过那个文件!请给我一份副本.缓存被"破坏".

我认为这很棒.所以我写了一个函数,用函数表和javascript标签添加时间戳附加到文件名,然后我用上面的语句配置了Apache.

现在:我如何判断缓存和缓存清除是否有效?

我正在用Firebug的两个插件检查我的页面:Yslow和Google Page Speed.两者似乎都说我的文件正在缓存:Yslow中的"添加过期标题"和"页面速度"中的"利用浏览器缓存"都被选中.

但是当我查看Page Speed Activity时,我看到很多请求并等待,没有'缓存命中'.

如果我更改样式表并重新加载,我会立即看到更改.但我不知道是不是因为浏览器从未缓存过,或者因为缓存被破坏了.

我该怎么说?

更新:它正在运作!

如果有人有兴趣,我只是写了一篇博客文章解释细节.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有