я использую filemtime
для снятия отпечатков внешних ресурсов в html, например:
<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
)?
md5(filemtime('screen.css'))
вместоfilemtime('screen.css')
? 128-битный хэш 32-битного числа по-прежнему так же хорош, как базовое 32-битное число. - person jedwards   schedule 28.11.2012dechex(filemtime('screen.css'))
или дажеstr_pad(dechex(filemtime('screen.css')), 8, '0', STR_PAD_LEFT)
-- просто идея - person jedwards   schedule 28.11.2012