Warning: session_start(): open(/var/lib/php/session/sess_6652d2811cb4024a21af0102d6f446d2, O_RDWR) failed: No space left on device (28) in /var/www/blog.ivru.net/config.php on line 1069

Warning: session_start(): Failed to read session data: files (path: /var/lib/php/session) in /var/www/blog.ivru.net/config.php on line 1069
Алгоритм генерации заголовка Etag на PHP аналогичный заголовку Apache 2

Алгоритм генерации заголовка Etag на PHP аналогичный заголовку Apache 2

В Apache 2(с какой именно версии пока что не отвечу) был изменён формат заголовка Etag используемого для управления кешированием. Ранее этот заголовок состоял из 3-х частей, с некоторого времени формат быз изменён - теперь заголовок состоит из 2-х частей разделённых знаком тире. Методом проб и ошибок, а так же аналитикой результатов генерации заголовка Apache удалось установить, что в первой части заголовка содержится размер файла для которого вычисляется заголовок(кстати эта часть присутствовала и в предыдущей версии заголовка из 3-х частей и располагалась она в второй позиции, то есть после первого тире), а вторая часть дата модификации файла в формате unixtime, причём после секунд идут 6 знаков микросекунд, которые не отделяются от секунд каким либо знаком(в том числе точкой), то есть микросекунды идут сразу за секундами. Поскольку в PHP предположительно нет стандартной функции, которая бы возвращался время изменения файла с милисекундами, для получения этой информации используется обращение к /usr/bin/stat. В листинге ниже приведена функция для генерации значения значения заголовка Etag по адресу файла на сервере, аналогичного применяемому в Apache 2.

Комментарии

Если у Вас возникли вопросы, Вы можете задать их в форме ниже. В частности если Ваш вопрос по Bitrix и что то не получается - можно спросить. Ваш e-mail не публикуется, при этом я отвечу на него если будет что то по теме. Писать необходимо для людей - избегайте сленга, пишите орфографически правильно.

Имя:
E-mail:
Текст комментария:

Вы так же можете прочитать следующие статьи: