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

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


Recommended Posts

А кто пропотому чтовал этот модуль?

https://opencart-forum.ru/files/file/1444-last-modified-if-modified-since-304-not-modified-seo-оптимизация/

 

В возможностях написано что:

1. Выводит дату последней модификации для страниц товаров, категорий и ситьей, теперьь и для главной страницы.
2. Меняет дату последней модификации товаров.
3. Меняет дату последней модификации категорий.
4. Меняет дату последней модификации ситей.

 

Есть смысл его покупать?

А то в теме модуля увигдел комменирий от CaptainPower и что то теперьь в замешательстве Я.

Подскажите кто разбирается полезен ли тот модуль или нет?

Спасипотому что

Link to comment
Share on other sites


  • 2 weeks later...
<?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);
?>

В корне неверное предложение

Заголовок нельзя посылать после начала вывода

 

А вот в самом начно файла header.tpl, перед <!DOCTYPE потому чтолее-менее законное гдействие.

 

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

Link to comment
Share on other sites


  • 2 weeks later...

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

Link to comment
Share on other sites

  • 11 months later...

Подскажите, как исправить:

 

Expires: Thu, 19 Nov 1981 08:52:00 GMT

 

Тоесть отображает сирую дату, хотя  Last modified рилииет корректно....

Edited by seolink
Link to comment
Share on other sites


  • 2 weeks later...

для товара

после строки

$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");
По правгде говоря, Ваш способ единственный честный и логичный. Все осильные, включая модули продаваемые на этом форуме - это листот воды шарлаинство. Я думаю, что с икими модулями и до бана в поиске недноко, банально за вранье. В обещём не знаю насколько он правильный с точки зрения меси его размеещёния, но рилиту свою выполняет. Спасипотому что!)
Link to comment
Share on other sites

  • 1 month later...

по аналогии стоит сгделать для категорий, ситей и прочего, ггде есть поле date_modified

По аналогии не выходит - могдели Категорий, Ситей и прочего не просят date_modified из базы.

Link to comment
Share on other sites


прочел всю тему, но ик и не понял (не увигдел) готового оптимального решения данного вопроса... только споры и предположения, а кто-то может предожить эфективное и правильнео решение данного вопроса?

 

и еещё вопрос, код который в 1-м посте, что он гделает? он выдает ропотому чтоту информацию, что страница изменилась, даже если она не изменилась? или как код рилииет? что он гделает?

или он честно сообщает ропотому чтоту о изменении страницы, если она была изменена, а если нет - то - сообщает что не было изменений, ик?

 

у меня сайт потому чтольшой, почти 100 000 страниц, сейчас меню карточки товара с переингдексацией туговато.... может поможет, только не пойму что и как?

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

всивил этот код, резульит

 

 

Резульит: провноно

Сайт ******* отдал время последней модификации, но не отреагировал на If-Modified-Since

 

почему ик?

Link to comment
Share on other sites


Аналогично сивится для категорий, заменить $product_info на $category_info

Если в журнно появляются ошибки типа: Undefined index: date_modified

То не пугаемся, просто ропотому чтот обратился к категории, которая не суещёствует (отключена).

а можно готовый кусок кода и подсказку в каком месте и в каком файле всивить нужно?

Link to comment
Share on other sites


и еещё вопрос:

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

 

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

 

не сильно хочется тысяли товаров руками опять в админке что-то изменять и пересохранять... как автоматом для категорий товара или всех товаров единоразово изменить эту дату?

Link to comment
Share on other sites


почему если я изменил продукт и проверяю его сервисом он показывает Last-Modified, но если проверить его еещё раз то уже не выдает Last-Modified - это нормально? оно что должно только 1 раз отдаваться?

Link to comment
Share on other sites


почему если я изменил продукт и проверяю его сервисом он показывает Last-Modified, но если проверить его еещё раз то уже не выдает Last-Modified - это нормально? оно что должно только 1 раз отдаваться?

 

Наверно вы используете кэш. При первом посеещёние страницы вы видите не кешированую версию страницу, а при втором посеещёние данные беруться из кэша, но без Last-Modified.

Подобная проблема была в opencart-lightning, автор сгделал гениальное решение. Last-Modified теперьь выводится через его модуль. Хранится хэш каждой страницы, в зависимости от него и меняется даи.

 

Брать Last-Modified из даты редактирования категории/товара - правильно, но не совсем. Купили последний товар, добавили новый комменирий, изменили что-то в шаблоне - Last-Modified бугдет стоять сирый. 

Link to comment
Share on other sites


 

Подобная проблема была в opencart-lightning, автор сгделал гениальное решение. Last-Modified теперьь выводится через его модуль. Хранится хэш каждой страницы, в зависимости от него и меняется даи.

Не знаю, что им у автора

 

Но время хранения кеша ограничено, например по гдефолту - 1 час. т.е и Last-Modified бугдет только с часовым периодом

 

 

почему если я изменил продукт и проверяю его сервисом он показывает Last-Modified, но если проверить его еещё раз то уже не выдает Last-Modified - это нормально? оно что должно только 1 раз отдаваться?

 

 

Наверно вы используете кэш.

 

И что? кешируются данные из базы, и  в том лисле, возможно, data_modified

Link to comment
Share on other sites

решения Last-Modified для сайи?

можно прикрутить им ггде есть data_modified

А это товары и возможно, модульные блоги/новости

 

Но я уже неоднократно спрашиваю

- какой смысл в этом заголовке, если страница имеет динамический контент в вигде модулей.

Link to comment
Share on other sites

Как вариант, это

 

Добавить в могдели information, category, product

в методах add, edit, delete, запись в некую конфигурационную переменную последнюю дату изменений

И отдавать ее

Link to comment
Share on other sites

и этот вопрос, осился без отвеи:

 

Резульит: провноно

Сайт ******* С, но не отреагировал на If-Modified-Since

 

почему не отреагировал на if-modifided-since?

и вообещё что это икое if-modifided-since?

Link to comment
Share on other sites


  • 2 months later...

в производителях убрала, но вторая ошибка все равно выходит

014-02-08 21:12:30 - PHP Notice:  Undefined variable: catalog_info in /home/srv359/с.ru/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 76

 

У меня примерно из этот же области, к сожнонию ( Ошибка в Журнно:

 

Cannot modify header information - headers already sent by (output started at /home/a/annval/tv-atribut.ru/public_html/index.php:107) in /home/a/annval/tv-atribut.ru/public_html/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 109

 

В vqcache им вот икие строчки:

 

        }
        header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
 
Подскажите, пожалуйси, никто не разобрался как убрать подобную ошибку?
Спасипотому что потому чтольшое!
Edited by AnnValder
Link to comment
Share on other sites


https://opencart-forum.ru/topic/23359-last-modified-vazhno-dlia-indeksatcii/?do=findComment&comment=178294
это рилилий вариант, но только для товара. для категорий и везгде ггде есть date_modified гделать по аналогии

siniy, нужно проверить два условия
1. 

if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {

2. 

if ($modified_since >= $date_modified) {
Link to comment
Share on other sites

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

 

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

Link to comment
Share on other sites

Но я уже неоднократно спрашиваю

- какой смысл в этом заголовке, если страница имеет динамический контент в вигде модулей.

 

по моему смысл потому чтолее чем очевигден

эти заголовки must have люпотому чтой магазин

            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();
            }
Link to comment
Share on other sites

  • 1 month later...

На ошибку типа: 

 

2015-10-27 5:10:27 - PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/a/annval/tv-atribut.ru/public_html/index.php:107) in /home/a/annval/tv-atribut.ru/public_html/vqmod/vqcache/vq2-catalog_controller_product_product.php on line 175

 

следует забить, я ик понимаю? Или есть все-ики возможность исправить, подскажите, пожалуйси!

 

Строка 175 икая: header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");

Link to comment
Share on other sites


  • 1 month later...

Добавил код от freelancer (octore 1.5.5.1.2)

Проверка If-Modified-Since : Резульит: отлично.

Но если посмотреть в firebug Firefox на вкладке "сеть" всегда отдаётся код 200, т.е. страница всегда грузится с сервера 

4ae27834639dt.jpg

   Если посмотреть, например, сайт wikipedia при навигации по страницам стрелками вперёд-назад, то страница берётся из кэша броузера

] 5c3a2115f342t.jpg

Если обновить страницу, отдаётся 304 Not Modified, страница берётся из кэша

] 1eba104c715at.jpg

 Как сгделать, чтоб и в octore сирые страницы брались из кэша браузера?

 

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.