Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Для профи > Дата создания документа в заголовках http


Автор: coyl 14.1.2007, 21:01
Итак, задача - сделать так, чтобы каждая страница движка выдавала заголовок с правильной датой создания.
Это необходимо для уменьшения нагрузки на сервер и улучшения индексации поисковыми роботами.

У меня есть несколько вариантов, но все они сводятся в основном к хранению этой даты в базе данных для каждой страницы. К примеру, если это магазин мп3 музыки - хранение даты добавления для каждого альбома. Если это новостной движок - для каждой новости своя дата и если на страницу выводится несколько новостей, то в заголовке даётся дата добавления последней ит.п.

Есть еще какие-либо идеи?

Автор: Mal Hack 14.1.2007, 21:31
Может быть я и не совсем понимаю суть вопроса, но пока ознакомься с: http://vingrad.ru/PHP-ART-003003

Автор: coyl 14.1.2007, 23:03
Цитата
Данный участник незарегистрирован в системе или же заблокирован.


А что там?

Автор: Mal Hack 14.1.2007, 23:12
Хм... Очень странно... Ладно, поправим.
Смотри тут: http://wboard.ru/lofiversion/index.php/t890.html

Автор: mishaSL 15.1.2007, 11:13
1 .Изменением даты заголовка индексацию поисковым роботом ты не улучшишь, т.к. в любом случае отдается заголовок, что эта страница сгенерирована с помошью PHP, и на дату создания роботы уже не смотрят.

2. Да и нагрузку на сервер тоже сильно не уменьшишь, лучше сделать кеширование, в статье написаной  
Mal Hack об этом подробно рассказывается.

Автор: Glip 15.1.2007, 12:19
Цитата

.к. в любом случае отдается заголовок, что эта страница сгенерирована с помошью PHP

а можно подробнее?
как именно в заголовке выглядит что страница сгенерирована с помошью PHP?

Автор: mishaSL 15.1.2007, 14:30
Пример заголовков:

Код

200 OK
Server: nginx/0.3.30
Date: Mon, 15 Jan 2007 11:26:44 GMT
Content-Type: text/html; charset=windows-1251
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/4.4.0
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Last-Modified: Mon, 15 Jan 2007 11:26:44 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache


Каждый сервер по разному отдает заголовки, но на большинстве отдается заголовок X-Powered-By.

Автор: Glip 15.1.2007, 14:52
Код

HTTP/1.1 200 OK
Server: nginx/0.5.5
Date: Mon, 15 Jan 2007 11:49:58 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
Content-Language: ru

1fc7
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>


странно, ничего похожего в заголовке нет

Автор: mishaSL 15.1.2007, 15:07
покажи сайт с которого ты брал заголовки.

Автор: Mal Hack 15.1.2007, 16:28
http://seolab.ru/add/rfc2068/ - протокол для желающих.

Автор: Glip 15.1.2007, 16:34
mishaSL http://www.timeout.ru

Автор: mishaSL 15.1.2007, 16:45
X-Powered-By:
Дополнительный заголовок, обычно вставляемый модулем сервера. В случае PHP, его можно отключить:
строкой 'expose_php = Off' в файле php.ini;
строкой 'php_flag expose_php Off' в файлaх httpd.conf или .htaccess.
В случае запуска php скрипта, как CGI, интерпретатору для этого можно передать флаг '-q':
#!/usr/bin/php -q

Спасибо Mal Hack.

Glip, да в данном случае нет этого заголовка. Но в любом случае уменьшать нагрузку на сервер путем проставления времени создания страницы в заголовках идея очень не продуктивная. Да и поисковому роботу лучше отдавать дату создания сегоднешнюю.

Автор: coyl 15.1.2007, 21:53
Цитата(mishaSL @  15.1.2007,  16:45 Найти цитируемый пост)
Да и поисковому роботу лучше отдавать дату создания сегоднешнюю.

А вот в руководстве для вебмастеров google пишут обратное, да и в Яндексе. smile 

Цитата(google)
Убедитесь, что веб-сервер поддерживает заголовок http If-Modified-Since. Он позволит серверу сообщать Google, изменилось ли содержание со времени прошлого сканирования. Поддержка этой функции сэкономит Ваш трафик и накладные расходы.


Цитата(yandex)
Насколько критично, что мой сервер не выдает last-modified? Я пытался настроить, но ничего не вышло.

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


Вопрос так и остаётся открытым.

Добавлено @ 21:57 
Цитата(mishaSL @  15.1.2007,  16:45 Найти цитируемый пост)
нагрузку на сервер путем проставления времени создания страницы в заголовках идея очень не продуктивная

Тут больше стоит задача не снижения нагрузки, а уменьшения времени индексации сайта.

Автор: coyl 15.1.2007, 22:23
Цитата(Mal Hack @  14.1.2007,  23:12 Найти цитируемый пост)
Смотри тут: http://wboard.ru/lofiversion/index.php/t890.html 

Да. Кеширование - это хороший способ, но в данной теме тот способ, что представлен в http://wboard.ru/lofiversion/index.php/t890.html абсолютно не годится, ибо он не передаёт никаких заголовков с датой создания. Конечно, можно доработать этот метод и передавать те самые заголовки, получая их из параметров файла (дата создания), но тут есть одно существенное "но". Существует целая категория сайтов с крайне ограниченным пространством на сервере.
В качестве примера можно взять начинающий развиваться мп3 магазин. Разработчики позаботились о хорошей базе музыки (миллионы песен, тысячи альбомов), но, к сожалению, она занимает почти всё дисковое пространство. А хорошая индексация особенно важна для развивающегося сайта. Итак, есть несколько десятков мегабайт дискового пространства и возможность кеширования ограничена - каждую страницу каталога, а он включает в себя информацию по каждому альбому и, более того, по каждой песне (в некоторых каталогах действительно для некоторых песен можно ознакомиться с историей создания), прокешировать просто не хватит пространства.
Тут можно предложить динамический кеш, который я использовал в одном из проектов, то есть информация о каждом файле кеша хранится в базе и, при достижении лимита, удаляется самый старый из файлов (по дате последнего доступа). Но опять - таки при достаточно небольшом пространстве нагрузка на сервер может не только не уменьшиться, но даже увеличиться в разы изза постоянного удаления старых файлов и создания новых.

Поэтому в данном случае наиболее приемлимым способом будет просто выдача даты в заголовке.

Получилось, что я написал статью вместо того, чтобы задать вопрос  smile 

Автор: Mal Hack 15.1.2007, 22:27
Цитата(mishaSL @  15.1.2007,  16:45 Найти цитируемый пост)
X-Powered-By:

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


coyl, просьба, не выделяйте таким форматированием текст. Очень тяжело читать. Поверьте, при грамотном изложении сути, вас все поймут.

Автор: coyl 15.1.2007, 22:47
Цитата(Mal Hack @  15.1.2007,  22:27 Найти цитируемый пост)
coyl, просьба, не выделяйте таким форматированием текст. Очень тяжело читать. Поверьте, при грамотном изложении сути, вас все поймут. 

ок. соре  smile

Добавлено @ 22:53 
Цитата(Mal Hack @  15.1.2007,  22:27 Найти цитируемый пост)
Что касается поисковиков, то я думаю, им все-равно, если ты, конечно дату не будешь отдавать, как 1980 год.
Все равно проиндексируют


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

Автор: Mal Hack 15.1.2007, 23:26
Так посылай заголовками всегда текущую дату. В чем проблема я понять не могу.

Автор: Eugene_Bond 16.1.2007, 11:46
Цитата(coyl @  15.1.2007,  22:47 Найти цитируемый пост)
В том то и дело, что от этого зависит именно скорость индексирования (углубления) страниц. То есть если поисковик будет все время попадать на главную страницу, которая не менялась, но при этом он не будет этого знать, то он её каждый раз будет индексировать тем самым уменьшая количество страниц, которые он проиндексирует далее за этот заход


Ну в чем проблема https://www.google.com/webmasters/tools/docs/en/protocol.html и в нем указать что когда менялось?

Думаю Яндекс тоже будет (если еще не начал) пользоваться этим файлом..

Автор: mishaSL 16.1.2007, 13:01
Цитата(coyl @  15.1.2007,  22:47 Найти цитируемый пост)
В том то и дело, что от этого зависит именно скорость индексирования (углубления) страниц. То есть если поисковик будет все время попадать на главную страницу, которая не менялась, но при этом он не будет этого знать, то он её каждый раз будет индексировать тем самым уменьшая количество страниц, которые он проиндексирует далее за этот заход (см. цитату яндекса). Именно в этом вся соль. А с кешем - тут и ежу ясно, что просто выплюнуть готовый файл - меньше затрат, чем сгенерировать его.


Если честно это бред. И это яговорю тебе точно и на своем опыте оптимизации программного кода под продвижение.

Объясняю почему:

Если вообще не отдается заголовок сервером о дате обновления и создания файла, то это очень плохо (но не критично), т.к. Яндекс не будет учитывать дату создания и обновления, и индексация сайта будет производится реже (цитат привести не могу, доказано опытным путем).

То что Яндекс будет индексировать меньше страниц из-за неправильной даты, это тоже не правильно, он будет индексировать ровно столькоже, сколько и без даты. Здесь подвох совсем не в этом. При индексировании он обращает внимание на дату как на второстепенные данные, если при индексировании новый кэш страниц на 90% совпадает со старым, то следующая индексация будет произведена чуть позже и т.д. при каждой индексации.

Так что лучше всего отдавать дату изменения документа сегоднешнюю, это я тебе точно говорю.

А если проблемы с местом на хостинге, то лучше всего оптимизировать программный код, тогда и нагрузка будет меньше и индексация быстрее.



Автор: Glip 16.1.2007, 16:43
как индексирует яндекс точно знает только яндекс

Автор: Mal Hack 16.1.2007, 16:57
Модератор: думаю, относительно PHP тема исчерпала себя. Для обсуждения того, как и кто и что индексирует, есть специальный форум

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)