filectime против filemtime для времени изменения файла?

Я пытаюсь убедиться, что некоторые изображения не кэшируются при их изменении, но которые были бы более подходящими для этого 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?" />

2 ответов


поскольку вы имеете дело с кэшированием изображений, filectime является innappropriate-он отмечает последний раз

когда разрешения, владелец, группа или другие метаданные из индекса обновляется

вы хотите знать, изменилось ли содержимое файла изображения - если оно было изменено, обрезано или заменено полностью.

следовательно filemtime более подходит для вашего приложения:

при записи блоков данных файла то есть время, когда содержимое файла было изменено

Если вы не хотите ? чтобы всегда появляться, сначала установите filemtime в переменную и проверьте ее:

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

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

еще лучше, проверьте наличие файла с file_exists () перед запуском filemtime


Примечание: В большинстве файловых систем Unix файл считается измененным когда его данные индекса изменяются; то есть, когда разрешения, владелец, группа или другие метаданные из индекса обновляются. Смотреть также filemtime () (который вы хотите использовать, когда хотите создать "Последние измененные" нижние колонтитулы на веб-страницах) и fileatime().

С руководство

Итак, вы хотите использовать filemtime.