php clearstatcache()性能和参数说明

时间:2012-11-28 15:34:02

标签: php stat filemtime

我正在使用filemtime对html中的外部资源进行指纹识别,例如:

<link rel="stylesheet" href="screen-<?=md5(filemtime('screen.css'));?>.css">

我注意到有效更新与filemtime返回的时间戳之间存在显着延迟,所以我在顶部添加了clearstatcache(),这似乎解决了这个问题。但根据php manual

  

如果您正在执行多个操作,则只需要调用clearstatcache()   对相同文件名的操作并要求有关该信息的信息   特殊文件不被缓存。

所以我想知道我是否正确使用它。

另外,我担心在每次通话时完全清除缓存的性能。谁能告诉我它是否会导致服务器显着减速?


clearstatcache也接受另外两个参数,但我不确定它们的含义:

  

clear_realpath_cache 是否清除realpath缓存。

     

filename 清除特定文件名的realpath和stat缓存   只要;仅在clear_realpath_cache为TRUE时使用。

我没有得到“realpath缓存”的含义,我找不到任何有关它的信息。以这种方式呼叫clearstatcache是否有意义:

clearstatcache(true,'/path/to/screen.css');

旨在仅清除与该特定文件相关的信息(从而减少clearstatcache的“影响”)?

3 个答案:

答案 0 :(得分:2)

$ clear_realpath_cache与realpath函数的调用有关,其结果也被缓存。 这应该对您对filemtime的调用没有影响。

答案 1 :(得分:2)

我无法直接回答。

但我建议您使用md5_file('screen.css')代替md5(filemtime('screen.css'))

答案 2 :(得分:1)

您似乎正在正确使用该功能。除非您正在使用 更喜欢缓存的其他统计函数(如文档中所列),否则我不知道它会导致显着减速的原因。

当您include('somefile')somefile可能位于多个不同的位置时,由您的include_path,cwd等确定。实路缓存只需消除重复搜索这些位置。

供您使用,您的代码似乎没问题。