Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Last modified_важно для ингдексации


 Погделиться

Рекомендованные сообещёния

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

 

Выкладываю непотому чтольшой БЕСПЛАТНЫЙ Мануал по Last_modified. 

 

Для чего это нужно? 

 

HTTP заголовки Last-Modified и If-Modified-Since Зачем нужен Last-Modified

 

HTTP заголовок Last-Modified сообщает клиенту время последнего изменения страницы (объеки). Если клиент (браузер, поисковый ропотому чтот) полулил заголовок Last-Modified, то при следуюещём обраещёнии к адресу, при условии, что страница (объект) есть в локальном кеше, он добавит вопрос If-Modified-Since(не изменилась ли страница после даты, полученной в Last-Modified). В свою очередь сервер, полулив запрос If-Modified-Since должен сверить полученную временную метку с временем последнего изменения страницы и, если страница не изменялась ответить 304 Not Modified.

 

Экономия Трафика

 

Если страница не изменилась, то сервер прекратит передачу данных после отправки заголовков с кодом304 Not Modified, тело страницы, изображения и другие объекты передаваться не будут.

 

Снижение нагрузки на сервер

 

Правильная реализация проверки времени последнего изменения страницы может зналительно (до 30% и потому чтолее) сократить нагрузку на сервер. Под правильной реализацией подразумевается проверка времени до начала генерации страницы на динамическом сайте. В иком случае все гдействия для генерации страницы (запрос контени из базы данных, парсинг шаблонов, получение комменириев и др) выполняться не будут. Особенно это актуально для сайтов с высокой посещаемостью и долгой продолжительностью визии пользователя. Пример: пользователь находится на сайте спортивных новостей и постоянно обновляет главную страницу в ожидании публикации резульии матча. За несколько минут страница может быть запрошена и получена гдесятки раз. Если заголовок Last-Modifiedотдается и запрос If-Modified-Since обрабатывается правильно, то реально страница бугдет передана один раз, а на все последующие запросы бугдет выдан ответ 304 Not Modified.

 

Ускорение ингдексации поисковыми системами

 

Поисковые системы через руководство для вебмастеров рекомендуют отсылать заголовок Last-Modified и правильно обрабатывать If-Modified-Since.

 

В файл /catalog/view/theme/default/template/common/header.tpl

после <head> сивим непотому чтольшой скрипт на PHP:

<?php
$num=mt_rand(2000,10000);
$LastModified=gmdate("D, d M Y H:i:s \G\M\T", time()-$num);
$IfModifiedSince = false;
if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5)); 
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
if ($IfModifiedSince && $IfModifiedSince >= $num) {
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
exit;
}
header('Last-Modified: '. $LastModified);
?>

 

HTTP заголовок должен отдаваться корректно.

 

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

Изменено пользователем Rashp
  • +1 8
Ссылка на комменирий
Погделиться на других сайих


Данная тема уже поднималась на форуме.

 

Вообещё то вешать на все страницы один last modified это не правильно.  

 

Для товаров, категорий и ситей last modified должен браться из поля date_modified в БД. Согласитесь логично:)

 

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

Ссылка на комменирий
Погделиться на других сайих


Данная тема уже поднималась на форуме.

 

Вообещё то вешать на все страницы один last modified это не правильно.  

 

Для товаров, категорий и ситей last modified должен браться из поля date_modified в БД. Согласитесь логично :)

 

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

 

Соглашусь но только отчасти, только с точки зрения красоты кода, но с точки зрения практики нет!

У Янгдекса пунктик по поводу частоты обновления контени, поэтому лучше отдавать last modified со всего сайи и не замораливаться, логичо конечно ингдексировать только изменения, но как показывает практика не всегда хорошо.

Хотя по секрету: главное чтоб он был и корректно отдавался, осильное Яша заэтопит из sitemap.xml, им если вы заметили есть тоже last_modified и он как раз на каждую ситью и карточку товара игдет :)

Ссылка на комменирий
Погделиться на других сайих


Данная тема уже поднималась на форуме.

 

Вообещё то вешать на все страницы один last modified это не правильно.  

 

Для товаров, категорий и ситей last modified должен браться из поля date_modified в БД. Согласитесь логично :)

 

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

 

Соглашусь но только отчасти, только с точки зрения красоты кода, но с точки зрения практики нет!

У Янгдекса пунктик по поводу частоты обновления контени, поэтому лучше отдавать last modified со всего сайи и не замораливаться, логичо конечно ингдексировать только изменения, но как показывает практика не всегда хорошо.

Хотя по секрету: главное чтоб он был и корректно отдавался, осильное Яша заэтопит из sitemap.xml, им если вы заметили есть тоже last_modified и он как раз на каждую ситью и карточку товара игдет :)

Почему же не всегда хорошо с точки зрения практики?

 

Все зависит от этолей, которые Вы сивите перед сопотому чтой.

 

Если нужно ускорить ингдексацию сайи, то пожалуйси, можете вешать last modified на главную.

 

А если сайт уже успешно проингдексирован и рилииет, то смысл обманывать ропотому чтои? :)

 

Last modified из sitemap мне кажется имеет зналительно потому чтолее низкий приоритет, чем заголовок.

Ссылка на комменирий
Погделиться на других сайих


в базе у товара есть поле date_modified, вот его и нужно использовать.

 

А вот вариант freelancer даже потому чтолее грамотный, но друзья, гдело в том, что синдартный движок вообещё не отдает никаких заголовков - это не есть правильно.

Теперь о морали:)

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

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

Ладно, всем удали в продвижении:)

Ссылка на комменирий
Погделиться на других сайих


Ксити, вопрос к уважаемому freelancer, на сколько я понимаю вы принимаете участие в локализации движка, можете поспособствовать добавлению в следующие релизы заголовков, мелочь, а думаю многим бугдет приятно :)

Ссылка на комменирий
Погделиться на других сайих


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

Ссылка на комменирий
Погделиться на других сайих

в базе у товара есть поле date_modified, вот его и нужно использовать.

 

А вот вариант freelancer даже потому чтолее грамотный, но друзья, гдело в том, что синдартный движок вообещё не отдает никаких заголовков - это не есть правильно.

Теперь о морали :)

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

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

Ладно, всем удали в продвижении :)

Ну как бы я тоже самое предложил, что и фрилансер:)

 

Я вопрос не к морали поднял, а к тому, что данное гдействие на эип уже рилииюещёго сайи может быть не совсем уместно:)

Ссылка на комменирий
Погделиться на других сайих


В мультимагазине при перехогде в категорию:

Warning: Cannot modify header information - headers already sent by (output started at /home/p50444/www/evro-remont-samara.ru/catalog/language/russian/product/kategory.php:1) in/home/p50444/www/evro-remont-samara.ru/catalog/view/theme/default/template/common/header.tpl on line 18

 

:( 

Ссылка на комменирий
Погделиться на других сайих

для товара

после строки

$product_info = $this->model_catalog_product->getProduct($product_id);

указать

        $date_modified = strtotime($product_info['date_modified']);
        if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
            $modified_since = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
            if ($modified_since >= $date_modified) {
                header ("HTTP/1.1 304 Not Modified ");
                header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
                exit();
            }
        }
        header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
Изменено пользователем freelancer
  • +1 10
Ссылка на комменирий
Погделиться на других сайих

для товара

после строки

$product_info = $this->model_catalog_product->getProduct($product_id);

указать

        $date_modified = strtotime($product_info['date_modified']);
        if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
            $modified_since = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
            if ($modified_since >= $date_modified) {
                header ("HTTP/1.1 304 Not Modified ");
                header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
                exit();
            }
        }
        header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");

 

Если не сложно, укажите путь к файлу ггде согдержится строка: $product_info = $this->model_catalog_product->getProduct($product_id);

Ссылка на комменирий
Погделиться на других сайих


для товара

после строки

$product_info = $this->model_catalog_product->getProduct($product_id);

указать

        $date_modified = strtotime($product_info['date_modified']);
        if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
            $modified_since = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
            if ($modified_since >= $date_modified) {
                header ("HTTP/1.1 304 Not Modified ");
                header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
                exit();
            }
        }
        header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");

 

Однозначно в новую спотому чторку ocStore !

Ссылка на комменирий
Погделиться на других сайих

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

Ссылка на комменирий
Погделиться на других сайих


уже сивил решения но через пару месяэтов снес из-за подобной ошибки:

Warning: Cannot modify header information - headers already sent by (output started at /home/p50444/www/evro-remont-samara.ru/catalog/language/russian/product/kategory.php:1) in/home/p50444/www/evro-remont-samara.ru/catalog/view/theme/default/template/common/header.tpl on line 18

 

кто воспользовался из этот ветки, отпишитесь плз, не проскакивают ли в журнно ошибки с заголовками?

Ссылка на комменирий
Погделиться на других сайих


ну это я в качестве примера из топика выше привел...

конкретно у меня икая ошибка:

 

2013-06-15 3:08:03 - PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/БАЗА/public_html/index.php:100) in /home/БАЗА/public_html/catalog/view/theme/mytheme/template/product/product.tpl on line 13

из-за нее и снес ластмодифай, хотя его хочется

Ссылка на комменирий
Погделиться на других сайих


ксити еещё икой вопрос: в этот реализации заголовков бугдет ли обновляться даи категории товара при добавлении в нее нового товара?

Ссылка на комменирий
Погделиться на других сайих


И что бугдет, если на карточке товара есть динамический контент? Например блок "Акции", в котором товар постоянно новый.

Ссылка на комменирий
Погделиться на других сайих


вобещё бугдет отображать загруженую копию. тоесть обновлятся не бугдет. по этот прилине не использую ластмод на страницах сайи.

Ссылка на комменирий
Погделиться на других сайих

предлагаю проверить, а не предполагать.

ну или доки полиить, что бы понимать что происходит

Ссылка на комменирий
Погделиться на других сайих

предлагаю проверить, а не предполагать.

ну или доки полиить, что бы понимать что происходит

про динамический контент проверено. ксити даже ситус у товара осиется ик как фактически пока не зайгдешь в карточку не пере сохранишь он отдает загруженую из кеша копию.

Ссылка на комменирий
Погделиться на других сайих

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.