我正在尝试确保某些图片在修改后不会被缓存但哪个更适合此filectime
或filemtime
?
我真的看不出php手册有多大区别?要么更快?
<img src="/images/123.png?<?=md5(@filectime("/images/123.png"))?>" />
<img src="/images/123.png?<?=md5(@filemtime("/images/123.png"))?>" />
还有这样的函数不会发出e_warning
文件错误吗?
理想情况下,我不想只提供问号<img src="/images/123.png?" />
答案 0 :(得分:17)
当你处理图像缓存时,filectime是不合适的 - 它标志着最后一次
来自inode的权限,所有者,组或其他元数据 已更新
您想知道图片文件内容是否已更改 - 是否已完全调整大小,裁剪或替换。
因此filemtime更适合您的应用程序:
当正在写入文件的数据块时,即 文件内容更改的时间
如果你不想要?要始终显示,首先将filemtime设置为变量并测试它:
$filemtime = @filemtime("/images/123.png");
<img src="/images/123.png<?= $filemtime ? '?' . $filemtime : ''?>" />
更好的是,在运行filemtime之前使用file_exists()测试文件是否存在
答案 1 :(得分:1)
注意:在大多数Unix文件系统中,文件被视为已更改 当它的inode数据改变时;也就是说,当权限,所有者, 组或来自inode的其他元数据已更新。也可以看看 filemtime()(这是您想要创建时要使用的内容 网页上的“上次修改”页脚)和fileatime()。
来自manual
所以你想使用filemtime
。
答案 2 :(得分:0)
filemtime::表示何时更改或修改数据或内容,不包括所有权或所有者组之类的元数据。
filectime::表示文件的元数据或索引节点数据发生更改的时间,例如权限,所有权或组的更改。
所以filemtime
是解决方案。