Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


Recommended Posts

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

 

Выкладываю непотому чтольшой БЕСПЛАТНЫЙ Мануал по 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 заголовок должен отдаваться корректно.

 

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

Edited by Rashp
  • +1 8
Link to comment
Share on other sites


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

 

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

 

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

 

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

Link to comment
Share on other sites


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

 

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

 

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

 

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

 

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

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

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

Link to comment
Share on other sites


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

 

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

 

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

 

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

 

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

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

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

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

 

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

 

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

 

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

 

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

Link to comment
Share on other sites


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

 

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

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

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

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

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

Link to comment
Share on other sites


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

Link to comment
Share on other sites


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

 

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

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

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

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

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

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

 

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

Link to comment
Share on other sites


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

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

 

:( 

Link to comment
Share on other sites

для товара

после строки

$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");
Edited by freelancer
  • +1 10
Link to comment
Share on other sites

для товара

после строки

$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);

Link to comment
Share on other sites


все нашел, 

 

путь к файлу для иких же как я, которые в бронепоезгде :)

 

catalog/controller/product/product.php

  • +1 1
Link to comment
Share on other sites


для товара

после строки

$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 !

Link to comment
Share on other sites

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

Link to comment
Share on other sites


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

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

 

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

Link to comment
Share on other sites


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

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

 

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

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

Link to comment
Share on other sites


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

Link to comment
Share on other sites


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

Link to comment
Share on other sites


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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.