DaVinci Опубликовано 22 августа, 2014 Жалоба Поделиться Опубликовано 22 августа, 2014 (изменено) Функцией заголовка как можно догадаться из названия служит информирование клиента о дате последней модификации web-документа. ------------------------------------------------------------------------------------------------------------ Как заголовок Last-Modified ускоряет поисковую индексацию?Все просто, как написано в помощи Яндекса, «робот не сможет получить информацию о том, обновилась ли страница сайта с момента последнего индексирования. А так как число страниц, получаемых роботом с сайта за один заход, ограничено, изменившиеся страницы будут переиндексироваться реже».Представьте. Есть сайт с 10 тысячами страниц. Сайт написан на php. Не отдается корректно заголок Last-Modified. Поисковой робот не может получить информацию о том, обновилась ли страница сайта с момента последнего индексирования. Что он делает? Индексирует все страницы!!! А не только те, которые изменились.Конечно! На многих сайтах используют Sitemap. Но Sitemap это рекомендация, помощь поисковому оптимизатору. Заменой заголовка Last-Modified он быть не может! ------------------------------------------------------------------------------------------------------------ http://habrahabr.ru/post/109043/ http://last-modified.com/ru/last-modified-if-modified-since-php.html index.php // Если все хорошо if(($res = $view->fetch()) !== false) { // Выводим результат header("Content-type: text/html; charset=UTF-8"); $LastModified_unix = strtotime($view->last_update); // время последнего изменения страницы if(!empty($LastModified_unix) && $LastModified_unix > 0) { $LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix); $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 >= $LastModified_unix) { header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); } header('Last-Modified: '. $LastModified); } print $res; /view/View.php ... public $currency; public $currencies; public $user; public $group; public $page; public $last_update; ... if(self::$view_instance) { $this->currency = &self::$view_instance->currency; $this->currencies = &self::$view_instance->currencies; $this->user = &self::$view_instance->user; $this->group = &self::$view_instance->group; $this->page = &self::$view_instance->page; $this->last_update = &self::$view_instance->last_update; } ... для примера возьму class/Pages.php (в остальные классах - бренды, категории, товары по аналогии) public function get_page($id) { if(gettype($id) == 'string') $where = $this->db->placehold(' WHERE url=? ', $id); else $where = $this->db->placehold(' WHERE id=? ', intval($id)); $query = "SELECT id, url, header, name, meta_title, meta_description, meta_keywords, body, menu_id, position, visible, last_update FROM __pages $where LIMIT 1"; $this->db->query($query); return $this->db->result(); } public function add_page($page) { $query = $this->db->placehold('INSERT INTO __pages SET ?%', $page); if(!$this->db->query($query)) return false; $id = $this->db->insert_id(); $this->db->query("UPDATE __pages SET position=id, last_update=NOW() WHERE id=?", $id); return $id; } public function update_page($id, $page) { $query = $this->db->placehold('UPDATE __pages SET ?% , last_update=NOW() WHERE id in (?@)', $page, (array)$id); if(!$this->db->query($query)) return false; return $id; } /view/MainView.php if($this->page) { $this->design->assign('meta_title', $this->page->meta_title); $this->design->assign('meta_keywords', $this->page->meta_keywords); $this->design->assign('meta_description', $this->page->meta_description); if($this->page->last_update) $this->last_update = $this->page->last_update; } SQL ALTER TABLE `s_pages` ADD `last_update` TIMESTAMP NOT NULL AFTER `header` проверяем http://last-modified.com/ru/if-modified-since.html =================================================== по вопросам: доработка, установки стучите в личку или скайп. Если вы хотите установить эту доработку но по каким то причинам не можете сделать это самостоятельно я всегда рад помочь на платной основе. Смотрите другие доработки в моем профиле скайп: simpladev Изменено 8 ноября, 2015 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
Vitalikxp Опубликовано 22 августа, 2014 Жалоба Поделиться Опубликовано 22 августа, 2014 А можно поподробней что куда вставлять.. Заранее спасибо. Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 22 августа, 2014 Жалоба Поделиться Опубликовано 22 августа, 2014 буквально вчера думал о ETaghttps://github.com/pikusov/Simpla/pull/86/files // Если все хорошо if(($res = $view->fetch()) !== false) { - // Выводим результат - header("Content-type: text/html; charset=UTF-8"); - print $res; + $ETag = md5($res); + $if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) : false ; + + if ($if_none_match && $if_none_match == $ETag) + { + header('HTTP/1.0 304 Not Modified'); + header('ETag: "'.$ETag.'"'); + print $res; + } + else + { + // Выводим результат + header("Cache-Control: must-revalidate"); + header("Content-type: text/html; charset=UTF-8"); + header("ETag: $ETag"); + print $res; + + } П.С. У вас вот такая проблема выйдет, товары на главной изменились, но page для главной не менялся, и тут выходит не корректно 304 отдавать и т.д.Возможно я в своём варианте тоже что то не учел. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 22 августа, 2014 Жалоба Поделиться Опубликовано 22 августа, 2014 Функцией заголовка как можно догадаться из названия служит информирование клиента о дате последней модификации web-документа.Объясните, если кто знает, для чего нужно это информирование? Просто для сведения или еще какая польза есть или может быть? Могу предположить, что при повторном запросе, например, главной страницы сайта http://site.ru/ браузер может сначала запросить заголовок, по заголовку определить время изменения, и если это время предшествует дате кеша страницы, то загрузить страницу из своего кеша, не запрашивая у сервера код страницы и тем самым сэкономив на трафике. Но если так, то работать правильно не будет ни один из двух способов... Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 22 августа, 2014 Жалоба Поделиться Опубликовано 22 августа, 2014 ну во вервых, автор темы предложил код, который совсем не так будет (должен работать) так как контент динамический, а Last-Modified у него изменяется только тогда когда меняем page Мой вариант работает по хеш'у контента да со стороны сервера все ровно происходит те же запросы и т.д. как при 200 так и при 304, но для пользователя ето выглядит так http://c2n.me/iMwzKd То есть экономит трафик + грузит кеш.На ету тему можно дискутировать, к тому же думаю некоторые браузеры могут ишачить Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 22 августа, 2014 Автор Жалоба Поделиться Опубликовано 22 августа, 2014 ну во вервых, автор темы предложил код, который совсем не так будет (должен работать) так как контент динамический, а Last-Modified у него изменяется только тогда когда меняем page Мой вариант работает по хеш'у контента да со стороны сервера все ровно происходит те же запросы и т.д. как при 200 так и при 304, но для пользователя ето выглядит так http://c2n.me/iMwzKd То есть экономит трафик + грузит кеш. На ету тему можно дискутировать, к тому же думаю некоторые браузеры могут ишачить я предложил пример реализации, которая работает именно так как надо. прошу заметить что в качестве примера я выложил код для страниц. функциональность затрагивает бренды, категории, товары, блог вообщем все что необходимо. то какую дату отдавать на главной странице это дело фантазии, далеко не у всех она динамическая. Логику даты обновления первой страницы стоит задавать исходя из функциональности этой страницы. Допустим если я там не вывешиваю новинки, акции новости и тд то какой должна быть дата? osben, проверьте свою реализации сперва тут http://last-modified.com/ru/if-modified-since.html и выложите скрин результата Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 22 августа, 2014 Жалоба Поделиться Опубликовано 22 августа, 2014 я предложил пример реализации, которая работает именно так как надо. прошу заметить что в качестве примера я выложил код для страниц. функциональность затрагивает бренды, категории, товары, блог вообщем все что необходимо. то какую дату отдавать на главной странице это дело фантазии, далеко не у всех она динамическая. Логику даты обновления первой страницы стоит задавать исходя из функциональности этой страницы. Допустим если я там не вывешиваю новинки, акции новости и тд то какой должна быть дата? osben, проверьте свою реализации сперва тут http://last-modified.com/ru/if-modified-since.html и выложите скрин результата Чет Вы одну воду написали.... > я предложил пример реализации, Это отлично, побольше людей таких было бы > которая работает именно так как надоВозникает вопрос, а как надо ? > прошу заметить что в качестве примера я выложил код для страниц. супер, и будет работать правильно только для статических страниц. (проверьте страницу контакты, отправка писем работает норм, пользователь видет сообщение об отправленном сообщении. Подозриваю что там может быть баг) > то какую дату отдавать на главной странице это дело фантазиино фантазия должна быть логична же, с таким успехом можно было задать 90й год ) > далеко не у всех она динамическая я предполагаю на основе своего опыта, логики симплы и сделанных проектов, доля не более 3% где статика. + статическую страницу, page можно сделать и для категории для перекрытия (и т..д) что уже точно не как не может быть статически Я выложил решение ETag а не Last-Modified простите, уехал на уикенд, так что дискуссию вести не смогу Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 22 августа, 2014 Автор Жалоба Поделиться Опубликовано 22 августа, 2014 Я выложил решение ETag а не Last-Modified простите, уехал на уикенд, так что дискуссию вести не смогу для чего вы ее вообще начинали если тема называется Last-Modified Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 26 августа, 2014 Жалоба Поделиться Опубликовано 26 августа, 2014 манипуляция с Last-Modified сводится для того что бы отдать 304 ответ для клиента, правильно ?Я показал вариант при котором можно тоже отдавать 304. И который по моему мнению более актуальнее работает на изменение контента. Если я не прав, то дайте пинок (конкретно ткните носом где я не прав что бы сделать выводы).Я Вам конкретно навел свои доводы что у Вас работает не так как должно. Если я не прав, то дайте еще один пинок. Или Вам не нравятся когда другие выкладывают свои идеи в Вашем теме ? Или что Вас подозревают что Вы что то не корректно написали, допустили ошибку (мое мнение с аргументами выше я приложил)? Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 26 августа, 2014 Автор Жалоба Поделиться Опубликовано 26 августа, 2014 все таки приложите по возможности скрин того что отдаст форма в ответ на ваше решение http://last-modified.com/ru/if-modified-since.html и как надо применять его если мы имеем рандомные выводы (товары, отзывы, статьи и т.п)? Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 26 августа, 2014 Автор Жалоба Поделиться Опубликовано 26 августа, 2014 Я Вам конкретно навел свои доводы что у Вас работает не так как должно. Если я не прав, то дайте еще один пинок. что конкретно работает не так как должно? я не понимаю) главная страница не обновляется автоматом? вы про это? Цитата Ссылка на сообщение Поделиться на другие сайты
Jabber Опубликовано 26 августа, 2014 Жалоба Поделиться Опубликовано 26 августа, 2014 А можно поподробней что куда вставлять.. Заранее спасибо.DaVinci, присоединяюсь к просьбе - если можно, с подробностями, в какие файлы и в каком месте каждого файла вставлять. Цитата Ссылка на сообщение Поделиться на другие сайты
Karen Опубликовано 26 августа, 2014 Жалоба Поделиться Опубликовано 26 августа, 2014 А почему нельзя разобрать пошагово, то что пишут на http://habrahabr.ru/post/109043/? Я так понял там все правильно? Настройка и обработка заголовока Last-Modified в php Для того чтобы веб-сервер передавал php-backend'у заголовок If-Modified-Since необходимо ему от этом сообщить! Для связки nginx + php так, location ~ \.php$ { … if_modified_since off; fastcgi_pass fcgi; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /<путь > /web$fastcgi_script_name; … fastcgi_pass_header Last-Modified; include fastcgi_params; } * This source code was highlighted with Source Code Highlighter. Для связки apache + php, так # If-Modified-Since (if php is not installed as cgi then comment lines below) RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}] RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}] * This source code was highlighted with Source Code Highlighter. Если php работает как модуль, то ничего настраивать не надо! Простой php-код обработки запроса If-Modified-Since, $qtime = isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])? $_SERVER['HTTP_IF_MODIFIED_SINCE']:'' ; $modified = substr(gmdate('r', $timestamp), 0, -5).'GMT'; if ($hdr == $modified) { header ("HTTP/1.1 304 Not Modified "); header ("Last-Modified: $modified"); exit(); } header ("Last-Modified: $modified"); //render * This source code was highlighted with Source Code Highlighter. Как обрабатывать запрос If-Modified-Since в symfony? В symfony уже предусмотрен механизм обработки заголовка. Все что нужно разработчику, так это передать в объект sfWebResponse заголовок. В случае его указания фрейморк все сделает сам. $datestamp = time(); $response->setHttpHeader('Last-Modified', $response->getDate($datestamp)); * This source code was highlighted with Source Code Highlighter. Так как на странице как правило располагается разный контент, то я написал метод, который выставляет самый поздний из переданных заголовков! static public function setLastModified($datestamp) { $response = sfContext::getInstance()->getResponse(); $request = sfContext::getInstance()->getRequest(); if(is_array($datestamp)) { rsort($datestamp, SORT_NUMERIC); $datestamp = $datestamp[0]; } if(!$response->hasHttpHeader('Last-Modified')) { $response->setHttpHeader('Last-Modified', $response->getDate($datestamp)); } else { $origLastModified = strtotime($response->getHttpHeader('Last-Modified')); if($origLastModified < $datestamp) $response->setHttpHeader('Last-Modified', $response->getDate($datestamp)); } } * This source code was highlighted with Source Code Highlighter. Его очень удобно использовать в случае, если на странице, например, располагается 3 последних видеролика, 3 последних статьи и там еще что-нибудь. Загружая каждую модель из базы данных, мы можем вызывать метод, и в итоге в ответе получив самую позднюю дату модификации. Для интересующихся код обработки заголовка находится в классе sfCacheFilter.class.php. В заключение хочу сказать, что использование заголовка Last-Modified не всегда оправдано. Например, если на сайте 5 тысяч страниц и на каждой находится один и тот же блок с часто меняющимся контентом, использовать заголовок будет бесполезно! В этом случае можно разве что отдавать разные заголовки для клиентов и поисковых роботов. Но как по мне обман роботов ни к чему хорошему не приводит. Ну или убрать этот блок . Еще, Проверить сайт на корректную обработку заголовка можно тут или так, <?php $ch = curl_init(); $url = 'http://site.ru/1.php '; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'If-Modified-Since: Sun, 28 Nov 2010 15:45:53 GMT' )); ob_start(); curl_exec ($ch); curl_close ($ch); $data = ob_get_contents(); ob_end_clean(); echo nl2br($data); ?> * This source code was highlighted with Source Code Highlighter. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 26 августа, 2014 Жалоба Поделиться Опубликовано 26 августа, 2014 Разобрать можно. Во-первых, длинная цитата, если Вы ее хоть бегло прочли, относится к CMS symfony. Вот для начала и разберите указанную систему, а потом разберите пошагово свою цитату, выясните, какой шаг имеет общий характер, а какой специфичен для той системы. Потом для специфичных шагов разработайте аналоги под Simpla. Когда все это проделаете, поделитесь впечатлениями и результатами. Во-вторых, в цитированном фрагменте сказано: В заключение хочу сказать, что использование заголовка Last-Modified не всегда оправдано. Например, если на сайте 5 тысяч страниц и на каждой находится один и тот же блок с часто меняющимся контентом, использовать заголовок будет бесполезно! В этом случае можно разве что отдавать разные заголовки для клиентов и поисковых роботов. Но как по мне обман роботов ни к чему хорошему не приводит. Ну или убрать этот блок. В Simpla, как во всяком магазине, есть корзина. Это важнейший из динамический блоков. Если для других блоков типа случайного вывода товаров, отзывов и проч. при выводе блока будет ошибка в том, что блок не всегда будет случайным, это совсем не критично и магазин это переживет. Но в случае корзины все будет иначе.Допустим, мы применили метод от DaVinci, и посетитель, впервые придя на сайт, проводит следующие действия:1. Открывает одну из инфо страниц.2. Открывает страницу товара и кладет товар в корзину.3. Открывает вторую инфо страницу.4. Открывает вторую страницу товара и кладет второй товар в корзину.5. Открывает опять первую инфо страницу.6. Открывает опять вторую инфо страницу.В корзине будет видно следующее:4. Два товара5. Корзина пуста6. Один товарПроисходит это потому, что на шаге 5 инфо страница будет выдана из кеша, сделанного на шаге 1, когда корзина была пуста. Аналогичное безобразие будет и на шаге 6.Таким образом, при простых переходах по разным страницам пользователь будет все время видеть РАЗНЫЕ корзины, в то время как он с корзиной никаких действий не производит! Что подумает простой пользователь об этом магазине и его владельце? Однозначно покупать в таком магазине рискнут не многие. Вот и думайте, какова ценность метода, предложенного DaVinci. В-третьих, метод, который предложил osben, вроде бы не имеет таких недостатков, и должен работать корректно. Но у него есть другой недостаток. Он каждый раз на сервере заново формирует страницу полностью, и уже по полному коду страницы определяет, изменилась она или нет. Тем самым самая главная идея применения Last-Modified - экономия серверных ресурсов - фактически и не работает. Экономится только на передаче от сервера браузеру, что при современном развитии интернет-коммуникаций куда менее принципиально. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 26 августа, 2014 Автор Жалоба Поделиться Опубликовано 26 августа, 2014 Разобрать можно. Во-первых, длинная цитата, если Вы ее хоть бегло прочли, относится к CMS symfony. Вот для начала и разберите указанную систему, а потом разберите пошагово свою цитату, выясните, какой шаг имеет общий характер, а какой специфичен для той системы. Потом для специфичных шагов разработайте аналоги под Simpla. Когда все это проделаете, поделитесь впечатлениями и результатами. Во-вторых, в цитированном фрагменте сказано: В заключение хочу сказать, что использование заголовка Last-Modified не всегда оправдано. Например, если на сайте 5 тысяч страниц и на каждой находится один и тот же блок с часто меняющимся контентом, использовать заголовок будет бесполезно! В этом случае можно разве что отдавать разные заголовки для клиентов и поисковых роботов. Но как по мне обман роботов ни к чему хорошему не приводит. Ну или убрать этот блок. В Simpla, как во всяком магазине, есть корзина. Это важнейший из динамический блоков. Если для других блоков типа случайного вывода товаров, отзывов и проч. при выводе блока будет ошибка в том, что блок не всегда будет случайным, это совсем не критично и магазин это переживет. Но в случае корзины все будет иначе.Допустим, мы применили метод от DaVinci, и посетитель, впервые придя на сайт, проводит следующие действия:1. Открывает одну из инфо страниц.2. Открывает страницу товара и кладет товар в корзину.3. Открывает вторую инфо страницу.4. Открывает вторую страницу товара и кладет второй товар в корзину.5. Открывает опять первую инфо страницу.6. Открывает опять вторую инфо страницу. В корзине будет видно следующее:4. Два товара5. Корзина пуста6. Один товар Происходит это потому, что на шаге 5 инфо страница будет выдана из кеша, сделанного на шаге 1, когда корзина была пуста. Аналогичное безобразие будет и на шаге 6.Таким образом, при простых переходах по разным страницам пользователь будет все время видеть РАЗНЫЕ корзины, в то время как он с корзиной никаких действий не производит! Что подумает простой пользователь об этом магазине и его владельце? Однозначно покупать в таком магазине рискнут не многие. Вот и думайте, какова ценность метода, предложенного DaVinci. В-третьих, метод, который предложил osben, вроде бы не имеет таких недостатков, и должен работать корректно. Но у него есть другой недостаток. Он каждый раз на сервере заново формирует страницу полностью, и уже по полному коду страницы определяет, изменилась она или нет. Тем самым самая главная идея применения Last-Modified - экономия серверных ресурсов - фактически и не работает. Экономится только на передаче от сервера браузеру, что при современном развитии интернет-коммуникаций куда менее принципиально. не обязательно в корзине отдавать Last-Modified (тем более ее не надо индексировать да и не индексируется она) и проблем в этом случае нет (проверенно)... помимо корзины есть разделы order, user в которых так же не надо проводить ни каких манипуляций. robots.txt User-agent: * Disallow: /sections/404 Disallow: /simpla/ Disallow: /order/ Disallow: /user/ Disallow: /js/ Disallow: /captcha/ Disallow: /Smarty/ Disallow: /design/ Disallow: /api/ Disallow: /compiled/ Disallow: /cart/ Disallow: /resize/ Disallow: /password.php метод который предложил osben, помимо тех недостатков которые вы упомянули, в случае с рандомным контентом будет работать корректно только в том случае если весь рандомный контент подтягивать через ajax Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 26 августа, 2014 Жалоба Поделиться Опубликовано 26 августа, 2014 а прям обязательно в корзине отдавать Last-Modified (тем более ее не надо индексировать да и не индексируется она)? я думаю нет, и проблем в этом случае тоже нет (проверенно)...Возможно, я сказал недостаточно четко о том, что речь идет не об отдельной странице корзины (тут, как Вы справедливо заметили, все корректно, если для этой страницы не отдавать Last-Modified), а об информере - блоке корзины, который формируется в основном шаблоне и, следовательно, показывается на ВСЕХ страницах. И в этом блоке описанная проблема встает во всей своей красе. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 26 августа, 2014 Автор Жалоба Поделиться Опубликовано 26 августа, 2014 Возможно, я сказал недостаточно четко о том, что речь идет не об отдельной странице корзины (тут, как Вы справедливо заметили, все корректно, если для этой страницы не отдавать Last-Modified), а об информере - блоке корзины, который формируется в основном шаблоне и, следовательно, показывается на ВСЕХ страницах. И в этом блоке описанная проблема встает во всей своей красе. да, собственное есть такая проблема, вы правы. первое что приходит на ум это принудительное обновление через все тот же ajax. можно сравнить идентификатор в корзине и в кеше и если не совпадают то обновлять. как то так. скорее всего есть другие варианты Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 26 августа, 2014 Автор Жалоба Поделиться Опубликовано 26 августа, 2014 проверил - вариант с принудительным обновление корзины через ajax работает. отправляем пустой запрос в /ajax/cart.php, обновляем informer Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 26 августа, 2014 Жалоба Поделиться Опубликовано 26 августа, 2014 Сомневаюсь, что это решит вопрос полностью. Это ж надо всю систему перекопать и так все подобные моменты заново переделать. А с некоторыми к тому же совсем не очевидно сразу, как решать. Например, подобный вопрос возникнет в связи с тем, что пользователь может переключать отображение цен на разные валюты. Когда придумаете способ справиться с этим, скорее всего, возникнет еще что-то. Стоит ли овчинка выделки? Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 26 августа, 2014 Автор Жалоба Поделиться Опубликовано 26 августа, 2014 упустил момент - тестил корзину с установленным примером от osben-a. в моем случае нет контроля кеша. основная задача отправить в заголовок дату последнего обновления страницы, при этом не обязательно кешить страницы. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 26 августа, 2014 Автор Жалоба Поделиться Опубликовано 26 августа, 2014 Сомневаюсь, что это решит вопрос полностью.Это ж надо всю систему перекопать и так все подобные моменты заново переделать.А с некоторыми к тому же совсем не очевидно сразу, как решать. Например, подобный вопрос возникнет в связи с тем, что пользователь может переключать отображение цен на разные валюты.Когда придумаете способ справиться с этим, скорее всего, возникнет еще что-то.Стоит ли овчинка выделки? Google: Руководство для веб-мастеровhttps://support.google.com/webmasters/answer/35769 Яндекс: Советы вебмастеруhttp://help.yandex.ru/webmaster/recommendations/indexing.xml Думаю стоит, СЕО-шники рекомендуют. не надо ничего перекапывать, манипуляции не глобальные. по поводу кеша это совсем другая история Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 27 августа, 2014 Жалоба Поделиться Опубликовано 27 августа, 2014 Как сказал Штирлиц, с этого надо было начинать. В самом первом посте Вы ведь не потрудились аннонсировать цели и задачи своей доработки. И более поздний мой вопрос об этом полностью проигнорировали. Если это надо для SEO, то Last-Modified с самого начала надо отдавать только в ответ на запросы поисковиков, а не всем подряд, во избежание описанных недоразумений. Соответственно надо бы все описывать точно и, конечно, приводить в соответствие код. А пока в теме уже довольно запутано, простому пользователю разобраться практически невозможно. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 27 августа, 2014 Автор Жалоба Поделиться Опубликовано 27 августа, 2014 Как сказал Штирлиц, с этого надо было начинать. В самом первом посте Вы ведь не потрудились аннонсировать цели и задачи своей доработки. И более поздний мой вопрос об этом полностью проигнорировали. Если это надо для SEO, то Last-Modified с самого начала надо отдавать только в ответ на запросы поисковиков, а не всем подряд, во избежание описанных недоразумений. Соответственно надо бы все описывать точно и, конечно, приводить в соответствие код. А пока в теме уже довольно запутано, простому пользователю разобраться практически невозможно. Надо руководствоваться первым постом где есть ссылка http://habrahabr.ru/post/109043/ по идее все ведь понятно вовсе не обязательно отдавать Last-Modified исключительно поисковикам. данный код совершенно ни как не влияет на обычного посетителя. нет там ни каких недоразумений. в первом сообщении как нельзя точно есть пример как отдать дату последнего обновления страницы. по аналогии делаем тоже самое для категорий, брендов и товаров. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 27 августа, 2014 Автор Жалоба Поделиться Опубликовано 27 августа, 2014 Объясните, если кто знает, для чего нужно это информирование? Просто для сведения или еще какая польза есть или может быть? Могу предположить, что при повторном запросе, например, главной страницы сайта http://site.ru/ браузер может сначала запросить заголовок, по заголовку определить время изменения, и если это время предшествует дате кеша страницы, то загрузить страницу из своего кеша, не запрашивая у сервера код страницы и тем самым сэкономив на трафике. Но если так, то работать правильно не будет ни один из двух способов... если вы про этот пост который я проигнорировал то вы опять же начали вести речь о кеше. из приложенного мною примера видна цель данной задачи. Как заголовок Last-Modified ускоряет поисковую индексацию? Все просто, как написано в помощи Яндекса, «робот не сможет получить информацию о том, обновилась ли страница сайта с момента последнего индексирования. А так как число страниц, получаемых роботом с сайта за один заход, ограничено, изменившиеся страницы будут переиндексироваться реже». Представьте. Есть сайт с 10 тысячами страниц. Сайт написан на php. Не отдается корректно заголок Last-Modified. Поисковой робот не может получить информацию о том, обновилась ли страница сайта с момента последнего индексирования. Что он делает? Индексирует все страницы!!! А не только те, которые изменились.Конечно! На многих сайтах используют Sitemap. Но Sitemap это рекомендация, помощь поисковому оптимизатору. Заменой заголовка Last-Modified он быть не может! Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 27 августа, 2014 Автор Жалоба Поделиться Опубликовано 27 августа, 2014 отредактировал первый пост что бы было понятнее Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.