Браузерное или пользовательское кеширование

123 4
AM
На сайте с 04.09.2009
Offline
47
#11
siv1987:
Откуда у вп html файлы?

Да, бред написал. Прошу прощения. Я имел ввиду html-сущности, генерируемые движком.

siv1987:
У html динамических страниц, также как и остальных динамических страниц с другим чпу форматом не обязательно должно быть настроено кеширование, потому что

А я как раз считаю, что обязательно должно быть настроено кеширование. И никаких потому что =) По крайней мере, если речь идет об информационном сайте. И даже не столько кеширование, сколько правильное содержимое заголовков Last-Modified и If-Modified-Since, т.к. этого требует Яндекс.

Но я об этом писал в первом сообщении темы.

siv1987:
Статью не читал, в двух словах что вы предлагаете для браузерного кеширования динамических страниц?

Предлагаю его настроить.

---------- Добавлено 29.11.2015 в 23:12 ----------

Ladycharm:
Вся ваша "беда" надумана и высосана из пальца.
Кэшированием "статики"(html, стили, скрипты, картинки) испокон веков занимался веб-сервер, и он отлично с этим справляется.

У "статики" есть дата изменения файла - на её основе веб-сервер сам грамотно отдаёт и Etag и LastModified. Apache умеет это ещё с первых версий 1.3.х

Я имел ввиду не статику, а отсутствие Last-Modified у динамики. Не знаю, почему в моей голове html-сущности превратились в html-файлы.

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

Но давайте возьмем движок WordPress, на котором работает огромное количество сайтов. Html-сущности там не отдают нужных заголовков. Даже если забить на кеширование (не знаю, почему все так хотят на него забить), Яндекс основывается на этих заголовках.

Клиентское кеширование и возможные проблемы, которые могут возникнуть при непонимании принципов его работы, вопрос серьезный. И поэтому я написал статью, создал этот топик. И призываю всех не думать, что Apache все настроит там как-то за вас. Видел я сайты, на которых главная страница (динамическая, с анонсами свежих статей) кешировалась на продолжительный срок, что есть проблема, если не понимать как это все работает.

siv1987
На сайте с 02.04.2009
Offline
427
#12
AndreyMorkovin:
А я как раз считаю, что обязательно должно быть настроено кеширование. И никаких потому что =) По крайней мере, если речь идет об информационном сайте. И даже не столько кеширование, сколько правильное содержимое заголовков Last-Modified и If-Modified-Since, т.к. этого требует Яндекс.

Покажите где он это требует?

Почему у динамических страниц с .html оно должно быть настроено а у других нет? С таким же успехом тогда можно требовать от всех страниц клиентского кеширования.

AndreyMorkovin:
Предлагаю его настроить.

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

L
На сайте с 07.12.2007
Offline
351
#13
AndreyMorkovin:
(не знаю, почему все так хотят на него забить).

Для динамических страниц(когда инклудятся шаблоны, куски кода и иформация из БД) есть только один способ узнать устарела ли страница - сгенерить её, посчитать от неё хэш и сравнить его с хэшем, хранящимся в БД.

А если страница уже сгенерена - чего бы просто не отправить её пользователю, каналы сейчас не лимитируют.

Поэтому многие забивают болт на кэширование на стороне клиента, так проще. Плюс, кэширование не даёт сайту никаких преимуществ в глазах Яндекса.

Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#14

Заголовок Last-Modified и его молочный брат lastmod из sitemap.xml помогают ускорить индексацию сайта.

G2
На сайте с 27.10.2009
Offline
62
#15
Ladycharm:
Для динамических страниц(когда инклудятся шаблоны, куски кода и иформация из БД) есть только один способ узнать устарела ли страница - сгенерить её, посчитать от неё хэш и сравнить его с хэшем, хранящимся в БД.

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

Генерировать заново проще - но тогда и сравнивать не надо. Раз сгенерировали - пишем новую версию в кеш и не извращаемся. Ну, или если надо поддерживать ласт-модифайд, то уже с кешированной страницей сравнивать, чего хеш вручную считать?

КакМаршрутник (http://goo.gl/forms/hMgaH0s9E5) — как маршрутник, но работает.
L
На сайте с 07.12.2007
Offline
351
#16
Алексей Барыкин:
Заголовок Last-Modified и его молочный брат lastmod из sitemap.xml помогают ускорить индексацию сайта.

В Яндексе - нет, его бот перестал поддерживать LastModified (раньше - поддерживал).

Яндекс за сутки на сайте переиндексирует от 1000 до 7000 страниц, для большинства сайтов этого вполне достаточно, куда ещё ускоряться?

В Google - ускоряет только теоретически. Его бот поддерживает LastModified (304 ответ сервера на картинке ниже), но Google и так шустро всё переиндексирует.

jpg ind.jpg
L
На сайте с 07.12.2007
Offline
351
#17
ghost28:
Ну, или если надо поддерживать ласт-модифайд, то уже с кешированной страницей сравнивать, чего хеш вручную считать?

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

Проще хранить хэш(хотя бы CRC32) от страниц в БД, его и сравнивать проще, чем 2 html-"портянки".

PS: Неплохо предварительно вытягивать html-код в одну строку, убирая пробелы и переносы строк между тэгами - они не влияют на контент страницы.

AM
На сайте с 04.09.2009
Offline
47
#18
Ladycharm:
В Яндексе - нет, его бот перестал поддерживать LastModified.

Откуда эта информация?

Я вижу следующий текст в хелпе Яндекса:


Даже если сервер не выдает дату последней модификации документа (last-modified), ваш сайт будет проиндексирован. Однако в этом случае следует учитывать следующее:
- в результатах поиска не будет показываться дата рядом со страницами вашего сайта;
- при сортировке по дате сайт не будет виден большинству пользователей;
- робот не сможет получить информацию о том, обновилась ли страница сайта с момента последнего индексирования. А так как число страниц, получаемых роботом с сайта за один заход, ограничено, изменившиеся страницы будут переиндексироваться реже.
R
На сайте с 20.02.2015
Offline
59
#19
Ladycharm:
Для динамических страниц(когда инклудятся шаблоны, куски кода и иформация из БД) есть только один способ узнать устарела ли страница - сгенерить её, посчитать от неё хэш и сравнить его с хэшем, хранящимся в БД.

В подавляющем большинстве случаев вся эта обвеска типа(последние новости/комментарии, виджеты, соц. кнопки) которые "инклудятся шаблоны" - для поисковиков, что мусор.

Показателем обновления служат дата создания/обновления записи/поста - основного контента страницы. Ну, еще можно учитывать дату последнего комментария к записи. Это касается статейных сайтов. Для других сайтов типа сервисов.. вообще смысла нету либо индивидуально настраивать какое то кеширование и отдавать last-modified.

L
На сайте с 07.12.2007
Offline
351
#20
AndreyMorkovin:
Откуда эта информация?

Из логов сервера для сайта, который поддерживает LastModified. В посте выше приведены картинки недавних логов ботов Яндекса и Google, у Яндекса нигде нет ответа 304 "Not Modified", у Google - есть.

Год назад 304 код светился в ответах Яндекс боту, значит он присылал заголовок If-Modified-Sinse:

jpg ind.jpg
123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий