9

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

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

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

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

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

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


clearstatcache还接受两个附加参数,但我不确定它们的含义:

clear_realpath_cache是否清除真实路径缓存。

文件名仅清除特定文件名的真实路径和统计缓存;仅在 clear_realpath_cache 为 TRUE 时使用。

我不明白“真实路径缓存”是什么意思,也找不到任何有关它的信息。以这种方式调用是否有意义clearstatcache

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

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

4

3 回答 3

2

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

于 2012-11-28T15:39:06.190 回答
2

我无法直接给出答案。

但我建议你使用md5_file('screen.css')而不是md5(filemtime('screen.css')).

于 2012-11-28T15:39:07.223 回答
2

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

当 you 时include('somefile')somefile可能在多个不同的位置,由诸如 your include_path、 cwd 等确定。realpath 缓存只是消除了重复搜索这些位置的需要。

供您使用,您的代码看起来不错。

于 2012-11-28T15:43:52.760 回答