Я бы не использовал filemtime () по одной конкретной причине: он работает только для проверки локальных файлов на том же хосте, где работает код PHP.
В современных приложениях часто встречается развертывание кода PHP на другом хосте, чем тот, который обслуживает статические ресурсы. На самом деле, это типичное развертывание кода PHP на нескольких серверах приложений за балансировщиком нагрузки, так что вы можете выполнять развертывание без потери времени.
Возможно, у вас сегодня нет этой архитектуры. Вы можете развернуть PHP-код на том же хосте, где живут ваши статические файлы, а также на вашей базе данных. Но так как ваше приложение превосходит один хост или требует непрерывной работы во время развертываний, вам в конечном итоге придется масштабироваться до нескольких хостов. Было бы лучше спланировать это на ранней стадии и не реализовывать код, который мешает вам масштабироваться, если вы можете избежать этого.
Ни один из серверов приложений PHP не будет иметь прямого доступа к файловой системе, в которой хранятся статические файлы. Если бы они это сделали, вам бы пришлось выполнить одно из следующих действий:
- Храните дубликаты статических файлов на каждом сервере приложений PHP, используя гораздо больше места для хранения. Затем позаботьтесь о том, чтобы поддерживать их синхронизацию, используйте некоторые фоновые сценарии для постоянной проверки того, что все хосты имеют одинаковый набор файлов и т. Д.
- Создание файловой системы для статических файлов, удаленно подключаемой ко всем хостам приложений PHP через NFS или аналогичный протокол. Тогда проверки
filemtime()
станут несколько медленнее, потому что они идут по NFS. И вам придется беспокоиться об отключении монтирования NFS, обеспечении безопасности, настройке NFS при добавлении нового хоста приложения и т. Д.
По этим причинам я бы предпочел поместить метку времени в базу данных, так как у вас уже есть метаданные файла (путь) в любом случае.