Помощник
|
Просветите: last-modified и expires |
ShowPrint
|
Сообщение
#1
|
||
|
|
||
|
|||
ixman |
28.4.2015, 19:27;
Ответить: ixman
Сообщение
#2
|
|
|
|
|
ShowPrint
|
Сообщение
#3
|
|
должна работать функция header() Если бы она еще сама знала, что она "должна"... :DПопробую еще побороться с ней пару ночей, ну а если "она меня" - придется заходить через htaccess... Как раз к тому времени у меня будет какая-никакая статистика по увеличению нагрузки на сервер и можно будет решить оставлять ли статику на апаче... Спасибо пребольшучее за "кусок" - очень полезный, обязательно почитаю, уже некоторые новые моменты для себя увидел, даже без тщательного разбора, но и вопросы появились, например с какой целью отключается Etag и Last-Modified в конце "куска"? Ведь если я правильно понимаю в html5 они служат для одинаковых целей... По "человечьей" логике если нет данных о дате изменения файлов, то надо бы их перегрузить, чтоб они точно были актуальными,даже не смотря на то, что файлы кешированы... Можно конечно к этому вопросу подходить с другим рассуждением типа: если неизвестна дата изменения, то и грузить не стоит - но это как-то противоречит моему совковому воспитанию... Хочется побороть все-таки header(), так как используя его можно проверить даты всех include-файлов и какой-бы кусок не поправил - отдавать действительно актуальную дату изменения... Еще бы понять саму систему: если код динамически генерируется каждый раз при отдаче, то по идее last-modified должен соответствовать времени генерации страницы и Etag должен быть каждый раз новый, или Etag это прототип "контрольной суммы" и вне зависимости от времени генерации страницы он один и тот же всегда (при условии отсутствия изменений в содержимом) :unsure: "Чем дальше в лес, тем третий лишний"... (с) |
|
|
ixman |
28.4.2015, 20:24;
Ответить: ixman
Сообщение
#4
|
|
Вообще я отключил эти заголовки ради эксперимента, ибо натолкнулся на одну мысль
Механизм ETag (Entity Tag) предназначен для обнаружения новых версий запрошенных файлов. Когда сервер отсылает клиенту файл, он добавляет заголовок ETag, в который записывает хеш отправляемого файла. Клиент же, при повторном запросе, добавляет заголовок If-None-Match, значение которого равно хешу файла в кеше. Если значение совпадают, то сервер возвращает ответ HTTP/1.1 304 Not Modified, а если не совпадают, тогда возвращает новую версию файла. Таким образом, удаление заголовка ETag в ответах сервера отключает этот механизм. Что заставляет кеш клиента использовать только значения Expires и Cache-Control (если вы не используете Expires и Cache-Control не удаляйте ETag!). Выигрыш такого подхода в том, что между клиентом и сервером отпадает надобность обмениваться запросами проверки новых версий (If-None-Match и 304 Not Modified). |
|
|
Rexxar |
28.4.2015, 21:45;
Ответить: Rexxar
Сообщение
#5
|
|
Валидатору не нравится само значение, но такая ситуация возможна при любом значение. Давно не видел, чтобы эту функцию использовали, просто забудьте ее.
http://stackoverflow.com/questions/9655526...meta-validation Вот люди тут сказали, что поисковики и даже авторские мета уже не считывают, типа они устарели. Правильней конечно узнавать у представителей ПС. Я пару раз узнавал у платонов, почти все эти мета данные они не учитывают. Заголовок новости, описание и под вопросом ключи, но вот последняя модификация тоже может не учитываться. В любом случае в них нет необходимости, поэтому советую просто забыть про них. |
|
|
ShowPrint
|
Сообщение
#6
|
|
Rexxar, спасибо за ссылку и Ваше мнение... Видимо я уже безнадёжно устарел... :unsure:
|
|
|
ShowPrint
|
Сообщение
#7
|
|
обмениваться запросами проверки новых версий Ixman, логика понятна, если не с чем сравнивать, то пропадает смысл сравнения и экономится время и ресурсы... Разумно с одной стороны, а если версия действительно новая? ждать окончания срока кеширования? И еще вопрос: хочется разобраться, вот этим куском:
Код "прочел", понял, кешируем на месяц, но при каждом обращении проверяем актуальность. хочется в голове понимания как определяется актуальность php-скрипта... По сути ведь php генерит "виртуальную" страницу, которая нигде больше не существует кроме как в браузере юзверя или памяти сервера... В клиентском кеше хранится информация об имени скрипта и хеше гренерированного им кода? При обращении страница герерируется на сервере, сравниваются клиентский и серверный хеши и, в случае различий, страница сгенерённая на сервере грузится клиенту? Ведь страница сгенеренная php-скриптом заведомо более свежая, как только что рождённая, т.е. при отсутствии last-modified и сравнивать-то становится нечего? за исключением математических параметров (размера, хеш-кода). То есть если на моей странице имеет место "динамическая" картинка вставляемая из набора случайным образом, то и хеш всегда будет разным, а значит и кешировать нет смысла, потому как страница будет все равно грузиться почти каждый раз заново? Ув. форумчане, прошу прощения за то что я такой "тупой, еще тупее", но хочется в голове разложить всё по полочкам, на свои места... Сообщение отредактировал ShowPrint - 29.4.2015, 0:16 |
|
|
ixman |
29.4.2015, 13:41;
Ответить: ixman
Сообщение
#8
|
|
Я не силён в глубинах алгоритмов и механизмов кеширования, но страницы генерируемые php скриптом отлично кешируются, иногда даже возникают проблемы. То есть инфа, выводимая скриптом, более новая просто не выводится, из-за того, что html снимок страницы находится в кеше. По сути в этом коде указан php для кеширования страниц с расширением php, ибо много не обновляемых страниц
|
|
|
ShowPrint
|
Сообщение
#9
|
|
|
Спасибо Ixman, глубинным дайвингом могу заняться и сам в свободное время, на данном этапе ограничусь информацией о том, что страницы кешируются. Пожалую настрою кеширование (в т.ч. Expires через htaccess) и воспользуюсь советом Rexxar - вообще удалю эти теги...
|
|
|
||
|
Текстовая версия | Сейчас: 18.4.2024, 18:43 |