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 загрузка, устраняя оценки содержания?
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' ) )