Bundle/Кэш файлы CSS в PHP


Я пытаюсь разработать механизм, PHP, который выполняет кэширование файлов CSS таким образом, уменьшить количество requests - страницы и время загрузки.

механизм оценивает в первой записи, если есть файл кэша на сервере для набора файлов, CSS зарядки, и если не существует, вы можете создать файл, который является уникальным и, что я включил содержимое всех файлов, CSS.

Для имени файла, я использую хэш в результате оценки содержимого каждого файла. Таким образом, если какой-либо изменить один символ, то новый файл будет создан, то, что происходит только во время разработки, и если возиться с CSS.

Этот механизм намного более выгодно, чем иметь один запрос для каждого CSS. Удается уменьшить в очень load-страницы и, в частности, количество requests же.

тем не менее оценки хэш для каждого файла CSS - time consuming, но, чтобы мне кажется, мне единственный способ убедиться, что если какой - CSS изменить, кэш-память, всегда будет иметь ожидаемое содержимое. Я использую по соображениям производительности функция hash_file внутри цикла:

$fhash .= hash_file('crc32b', $filepath);

Есть ли функция, лучше с точки зрения производительности для этой работы? Кто-нибудь знает другой механизм или алгоритм?

Будучи уверен, что CSS это только изменение в развитии, а не в производство не будет лучше оценить хэш-набор имен файлов CSS загрузка, устраняя оценки содержания?

Author: chambelix, 2015-08-10

1 answers

, как Правило, при работе с кэшем, я считаю, дата изменения файла, определяющим, то альтернативой будет создать хэш с помощью filemtime на основе timestamp, когда содержимое файла было изменено в последний раз.

Эта функция возвращает время, когда блок информации, файл был изначально написан, то есть время, когда содержимое файла было изменено.

Возвращает время последнего изменения файла, или FALSE в случае ошибки. Время возвращается в виде Unix timestamp, который подходит для функции date()

echo filemtime( 'style.css' )
// 1427338769 - output inicial
// 1439229908 - output após a alteração do arquivo

// aplicando o HASH, output: e2510ea8
echo hash( 'crc32b' , filemtime( 'style.css' ) )
 1
Author: Papa Charlie, 2020-06-11 14:45:34