文件修改时间与文件时间?

2022-08-31 00:59:10

我试图确保某些图像在修改时不会被缓存,但哪个更适合这个或?filectimefilemtime

我真的看不出php手册有什么不同?两者都会更快吗?

<img src="/images/123.png?<?=md5(@filectime("/images/123.png"))?>" />
<img src="/images/123.png?<?=md5(@filemtime("/images/123.png"))?>" />

另外,是否有这样的函数不会发出 on 文件错误?e_warning

理想情况下,我不想只打问号<img src="/images/123.png?" />


答案 1

当您处理图像缓存时,是不合适的 - 它标记了最后一次:filectime

当更新 inode 中的权限、所有者、组或其他元数据时

您想知道图像文件内容是否已更改 - 如果它已被调整大小,裁剪或完全替换。

因此,更适合您的应用:filemtime

写入文件的数据块的时间,即更改文件内容的时间

如果您不希望 始终显示 ,请先设置为变量并对其进行测试:?filemtime

$filemtime = @filemtime("/images/123.png");

<img src="/images/123.png<?= $filemtime ? '?' . $filemtime : ''?>" />

更好的是,在使用 之前测试文件是否存在。file_exists()filemtime


答案 2

文件时间:表示更改或修改数据或内容的时间,不包括元数据(如所有权或所有者组)的数据或内容。

文件时间:表示文件的元数据或 inode 数据被更改的时间,例如权限、所有权或组的更改。

解决方案也是如此。filemtime


推荐