Last-Modified и динамический контент

fender

Новичок
Поисковая оптимизация. Last-Modified и динамический контент

Правильно ли я понимаю, что задачу по наличию в заголовке ответа веб-сервера (в частности Apache) полей Last-Modified, Content-Length с правильными значениями при отдаче им динамического контента можно решить двумя способами:

1) возложить ее на плечи приложения, и:
- вычислять при генерации html-страницы последнюю дату изменения материалов, из которых она собрана и отдавать Header("Last-Modified: %date%");
- считать размер полученного html и отдавать Header("Content-Length")

2) использовать для этих целей какой-нибудь проксирующе/кэширующий модуль Apache, который это умеет

Т.е., верно ли, что Apache с умолчательными настройками ни в коем случае не станет сам считать Content-Length динамической страницы и уж тем более не станет заморачивается насчет даты ее последней модификации, как он делает это со статическими файлами?

И не существует никаких решений кроме перечисленных выше?
 

white phoenix

Новичок
Apache не передает заголовки 'Content-Length' и 'Last-Modified' (но и не только эти) если была вызвана динамическая страница (скрипт). 'Content-Length' роли вообще-то не играет при 'Connection: close', но если хочешь можешь в конце скрипта считать ([m]ob_start[/m]) размер страницы и отдавать этот заголовок. Насчет 'Last-Modified': можно отдавать просто текущую дату, а можно дату изменения материалов.
Но разве это так важно?
 

Фанат

oncle terrible
Команда форума
white phoenix
ты не понял вопроса.
поэтому не надо больше писать в этот топик.
 

fender

Новичок
Но разве это так важно?
Ну вот стоит такая задача: Отдавать правильный Last-Modified и правильно обрабатывать If-Modified-Since. В текущей реализации нет ни того, ни другого (для скриптов). А Content-Length - это уже до кучи...
Система не моя, поэтому ищу самый безболезненный вариант, без правки кода приложения

-~{}~ 28.01.06 16:01:

Народ, а надо или не надо вообще скрипты кэшировать?
Лично я всегда запрещал, посылал соотвествующие заголовки в каждом php-файле.
Теперь вот когда поисковые оптимизаторы поставили эту задачу, начал репу чесать.
Может при правильной реализации этого механизма с Last-Modified все-таки можно и нужно кэшировать динамический контент?
Кто бы разъяснил ситуацию... может встречались какие-нибудь грамотные статьи на эту тему?
 

Фанат

oncle terrible
Команда форума
можешь ответить на вопрос: "Надо или не надо бриться?"
 

fender

Новичок
Могу, в зависимости от настроения и еще много от чего.
Только тут немножко по-другому все, посложнее :)

Кэширование тут не главный вопрос, просто он непосредственное отношение к этим 2-м заголовкам имеет.
Тут как оказалось роботам поисковым не все равно как это работает
 

Фанат

oncle terrible
Команда форума
Если ты знаешь, что на вопрос нельзя ответить, то зачем задаёшь его?
 

fender

Новичок
Даже если нельзя ответить, интересует опыт, мнение, рекомендации сообщества
Твоя рекомендация - "забить" , насколько я понимаю? :)
 

Фанат

oncle terrible
Команда форума
Меня интересует твой опыт, мнение, рекомендаци по вопросу "Надо или не надо бриться?"

или задумаешься, а нужен ли тебе вообще ответ на этот вопрос, если у тебя есть чёткая задача - "бриться"?
 

fender

Новичок
Окей, ты прав, зря ее про кэширование речь завел.
Задача весьма четкая - "бриться"
 

Net.Ru

Новичок
Практическое решение - первый вариант.

Сторонние модули просто не могут сами выяснить LMT, т.к. информация об это выдается или не выдается скриптом.

Content-length может быть и смог бы выдавать какой-нибудь модуль, но как уже верно заметил Фанат, особой разницы наличие CL не играет. Поэтому вряд-ли такой модуль существует, т.к. это не понятно кому нужно. Однако, если есть коркретное условие выдавать CL, чем спорить, лучше и сделать описанным ранее способом.

Возвращаясь к LMT, для апача есть mod_header, который может произвольно устанавливать любые заголовки, в том числе и LMT. Но это грязный хак, так как выдавать он будет не реальное время, а то, которое ты укажешь в .htaccess. Правда, если делать все аккуратно, можно на каждое изменение любой страницы менять LMT в .htaccess пусть даже для всего сайта. Это не самое оптимальное решение (ведь большая часть страниц остается без изменений), но оно, по крайней мере, вполне корректное. Но при такой выдаче LMT не заработает сам по себе if-modified-since и запросы с ним все-равно будут приходить скрипту. На поисковооптимизаторской части это не должно никак сказываться, но если преследуется задача снизить нагрузку на сервер, то так она не будет решена.

Т.е. единственное точное и верное решение - на уровне скрипта выдавать правильный LMT и на уровне же скрипта проверять, изменилось ли что по if-modified-since. Но на самом деле такую честную реализацию протокола мало кто делает - разве что очень большие сайты с очень большой нагрузкой.
 

alexhemp

Новичок
Я обрабатываю if-modified-since - благо это дело 2-х строк.
только в скриптах нужно определить, что-же такое дата модификации страницы, ибо она собирается из объектов разных типов и важно ничего не пропустить, потом будешь гадать почему не индексируют поисковики.

Но по слухам у Яндекса есть так называемый "быстроробот", который if-modified-since не шлет, и индексирует сайты намного быстрее.
 
Сверху