Почему скрипт не отдает параметры Last-Modified
12.09.2007 18:43:03
Почему скрипт не отдает параметры Last-Modified
|
|
|
|
16.05.2012 16:36:16
Это все еще актуально?
Надо просто прописать эту строчку в init.php и больше ничего и нигде не дописывать? Или надо как-то по-другому настраивать Last-Modified? |
|
|
|
18.05.2012 15:14:49
Вопрос актуален
|
|
|
|
21.05.2012 15:07:25
Угу, вы сами-то в смысл сказанного вдумайтесь - сначала переходит на страницу, потом проверяет дату модификации. Т.е. снижения нагрузки ни какой не будет - все равно страница перечитываться станет.
И о каком СЕО-эффекте вы речь ведете? Только конкретно, пожалуйста. |
|
|
|
22.05.2012 07:27:36
Робот не переходит на страницу, а посылает запрос серверу и если документ не изменился получает ответ 304 и неиндексирует , вот отсюда и снижается нагрузка на сервер.
|
|
|
|
22.05.2012 12:40:28
И как сервер узнает, что документ не изменился?
|
|
|
|
22.05.2012 12:44:40
Угу, а еще учтем, что на любой страницы мало-мальски нормального сайта выводится куча динамической информации, страница меняться будет всегда. Если это, конечно, не сайт типа maya_sаbaka.narod.ru
|
|
|
|
04.01.2013 04:20:52
Совсем запутался в Ваших комментариях,
одни говорят, если правильно настроить Last-Modified, то снижается нагрузка на сервер, другие говорят P.S. И как сервер узнает, что документ не изменился? Лично мне говорят, P.S. что мне необходимо установить на своем сайте Last-Modified, для главной страницы mysyte.ru нужно указывать срок не более 5 дней до текущей даты, для раздела – не более 2 недель, для страниц товаров/статей – не более 30 дней. А как это сделать -не пойму. Установил header('Last-Modified: '.gmdate('D, d M Y H:i:s'). ' GMT'); как написано выше, В панели яндекс.вебмастер ответ сервера показывает Last-Modified постоянно на четыре часа прошедшей даты может кто подскажет как поставить будущую дату? |
|
|
|
11.06.2014 14:48:31
Строчка
По поводу нагрузки на сервер: т.к. в этом решении не обрабатывается запрос If-Modified-Since, следовательно 304 заголовок не будет отдан и запрашивающая сторона не узнает о том, что страница не изменилась и запросит её в обычном порядке. Вот моя версия решения проблемы. Работает для элементов инфоблоков и страниц, реализованных через файлы.
Данный код можно поместить в \bitrix\modules\main\include\prolog_after.php, заменив им фрагмент:
В фильтре (массив $arFilter) необходимо указать вместо 'CODE' => $_REQUEST['ELEM_CODE'] условие, которое актуально для вашего ресурса. Проверить результаты можно |
|||||||
|
|
11.11.2014 05:57:16
Ваш пример интересен
разместил код в указанном месте но, $_REQUEST['ELEM_CODE'] ничего не даст, т.к. включено ЧПУ отсюда вопрос, как по ссылке (ЧПУ) получить ID для подстановки в фильтр выборки т.е. должно быть вроде этого $arFilter = Array("ID"=>$ID); Как получить $ID ? Документацию читал, но мало. Столкнулся недавно. ----------------- добавлю, чтобы получить ИД, нужно получить символьный код (по простому ссылка из адресной строки) Как ее получить ? курится и Чтобы запустить этот пример
|
|||
|
|
01.12.2014 16:05:53
Так и не удалось получить дату изменения (редактирования) страницы (статичной)
Уточню, Версия "1С-Битрикс: Управление сайтом 12.0.6" |
|
|
|
01.12.2014 16:14:53
Если Вы говорите о статичной странице, все равно должен отрабатывать
А для динамических страниц, я, как ни странно, писал бы дату в глобальную переменную и читал ее в эпилоге |
|||
|
|
01.12.2014 17:13:50
Дык, все страницы сайта битрикса это динамика. Т.е. статика это не home.html
Что касается даты в global, это идея, только где идет обработка таблицы iBlock ? |
|
|
|
01.12.2014 17:32:55
Заранее извиняюсь, что не очень тщательно читал посты выше, и надеюсь что суть, которую уловил из поста, например, Алексея, понял правильно.
Во-первых, ок, если говорить о динамических страницах в таком ключе, то я имел в виду страницы, использующие данные инфоблоков для контента, откуда и можно получить "TIMESTAMP_X", например страница с детальным текстом новости. Во-вторых, если на странице (пусть и динамической с точки зрения php), подключены header, footer, а между ними только текст и html-теги, то такую страницу с точки зрения Битрикса можно считать страницей со статичной информацией, и актуальная дата будет соответствовать дате изменения файла, то есть результату ф-ции filemtime По поводу даты в global - с одной стороны, я погорячился, с другой - тут зависит от сайта. Если используется не слишком много комплексных компонент и шаблонов можно в разные места поместить код, пишущий дату в переменную.. например в тело кастомизированного компонента, в главный файл шаблона комплексного компонента, в эпилог шаблона обычного компонента, много куда в общем |
|
|
|
01.12.2014 18:48:03
Имеет смысл через
|
|||
|
|
01.12.2014 23:19:51
Мне на одном проекте тоже пришлось делать такую же хрень. Модифицировать ядро, как вы, я не стал, ограничился событиями. В init.php:
Смысл, надеюсь, понятен. Сначала проверяем, задана ли глобальная переменная $lastModified. Если она задана, то отдаём заголовок Last-Modified. Потом смотрим, есть ли в запросе заголовок If-Modified-Since. Если он есть и он больше даты последнего изменения, отдаём пустую страницу со статусом 304 Not Modified. Это половина апельсина. Вторая половина -- задать переменную $lastModified. Применительно к странице детального просмотра элемента это может выглядеть так: 1) в result_modifier.php шаблона компонента детального просмотра сохраняем TIMESTAMP_X в кеше компонента:
Это говорят сеошники. Такое было актуально лет 20 назад, когда сайты по большей части состояли из статических html-страниц, лежащих на диске. То, что сеошники до сих пор говорят об этом, очень ярко характеризует их опыт, знания, кругозор, интеллект и общий уровень развития.
«Да не могут же они!»
|
|||||||||||
|
|
13.01.2015 15:40:38
|
|||
|
|
27.01.2015 06:00:00
Вопрос всё ещё актуален!
Есть ли какое-нибудь работоспособное решение? |
|
|
|
27.01.2015 07:45:32
|
|||
|
|
27.01.2015 15:26:29
В #19 вполне работоспособное решение.
«Да не могут же они!»
|
|
|
|
10.06.2015 16:12:42
Не заводится:
ни так header('Last-Modified: '.gmdate('D, d M Y H:i:s'). ' GMT'); в init.php, dbconn.php ни так, как написано в #19 БУС просто тупо вырезает заголовок last-modified. Попробовал передать Last-Modified1 - все ОК, приходит. Хотя на более старых проектах это работало. Кто-нибудь знает, какой модуль его режет и можно ли это отключить? |
|
|
|
10.06.2015 16:35:39
|
||||
|
|
|||