我正在使用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
的“影响”)?
答案 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等确定。实路缓存只需消除重复搜索这些位置。
供您使用,您的代码似乎没问题。