Ruslan Brest, rb.labtodo.com
Backend web-developer: CodeIgniter, PHP, MySQL, OpenCart, PrestaShop, MaxSite CMS

Opencart: генераторы sitemap.xml (Google Sitemap) и YML (Yandex.Market) для большого количества товаров

Решения, рассчитанные на большое количество товаров:

Сам я ни одно из этих решений не проверял на больших количествах товаров. Воспринимайте как список для справки, изучения и обсуждения.

Главные проблемы стандартного генератора sitemap.xml, в котором по традиции всё делается в лоб и без оптимизаций:

  • из базы выбираются сразу все товары. На этом этапе при большом их количестве проблемы могут возникнуть как у сервера баз данных, так и с местом на временном разделе;
  • всё это передаётся PHP и в памяти формируется одна большая строка, содержащая весь XML. Только в конце она записывается в файл. На этом шаге тоже вполне можно упереться в ограничение доступной памяти;
  • а заодно можно легко упереться и в ограничение на время выполнения скрипта (по умолчанию обычно 30 секунд). И некоторые хостинги запрещают это время увеличивать (как раз для борьбы с ресурсоемкими и неоптимизированными скриптами). Впрочем, вряд ли магазин со 100 тысячами товаров будет пользоваться шаред хостингом. Но проблемы возникают и на более мелких количествах - порядка 20-30 тысяч. Хотя может даже и раньше (см. пост Yoda в блоге, первая ссылка - там речь о том, что уже и на 3000 бывают проблемы на некоторых серверах);
  • у гугла есть какие-то ограничения на размер файла sitemap.xml или максимальное количество позиций в нём.
twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru digg.com friendfeed.com liveinternet.ru livejournal.ru yandex.ru del.icio.us
Комментариев: 12
  1. Когда есть возможность, лучше использовать генераторы, анализирующие файлы логов.

    Для Apache:

    https://code.google.com/p/googlesitemapgenerator/

    Для nginx:

    https://code.google.com/p/sitemap-generators/

  2. 2013-04-24 в 21:58:17 | Ruslan Brest

    Почему лучше? Мне неочевидно.

    Или речь не про Опенкарт, а про "вообще"? Хотя и в этом случае хотелось бы подробностей или намёков.

  3. И для opencart, и вообще. Принцип работы иной, нагрузка на сервер меньше.

    То есть у нас заранее есть список URL, не надо никаких запросов к БД.

    Анализируя логи можно точно узнать, к каким страницам чаще обращаются -- в sitemap есть параметр приоритета ссылок.

    Я заинтересовался вопросом пару месяцев назад, остановился на втором варианте по рекомендации

    http://technosophos.com/content/5-differences-moving-xml-sitemap-module-googles-sitemap-generators

  4. 2013-04-25 в 04:13:52 | Ruslan Brest

    Принцип я сообразить могу. Мне непонятна схема работы для той области, в которую большинство начинающих опенкартовцев попадают. Типичная задача: новый магазин (сайт), добавили 100-1000 товаров, хотим, чтобы поисковики быстро о них узнали.

    Какова схема работы в случае генераторов по логам? Ждать, пока оно само популярным станет и кто-то накликает? Или самим сидеть и все товары кликать вручную (ну или curl/wget-ом)? Почему лучше отдать в сайтмап часть ссылок, а не все товары, категории и статьи?

    Понятно, что в случае каких-то больших инфопорталов или новостных сайтов, или давно известного и популярного сайта снизить таким образом нагрузку можно и дать акцент на часть страниц, самых нужных. Другими словами, когда люди узнают и сгенерят набор этих ссылок раньше, чем поисковики о них узнают и придут за следующей порцией обновлений. То есть когда людей очень много, их усилиями можно заменить и cron, и обращения к базе, и генерацию сайтмапа. Согласен. Но... По-моему, это не наш случай. Пока не встречал среди владельцев магазинов тех, кто хотел бы гуглу показать только самое актуальное. Обычно хотят скормить ему всё, даже старое и ненужное, но что возможно имеет вес и на него приходят из поисковиков.

    Хотя за идею, конечно, спасибо - я не задумывался в этом направлении. Может не дорос ещё. Статью почитаю.

  5. В SEO вообще сейчас тенденция не в количестве, а качестве. То что ссылка будет в sitemap еще не значит, что Google начнёт к ней лучше относиться, а проиндексировать и пройтись по ссылкам поисковик и сам в состоянии.

  6. 2013-04-25 в 05:34:03 | Ruslan Brest

    Если так, тогда вообще непонятно, зачем sitemap нужен. Показывать самые новые и интересные страницы?

    Вот пара цитат непосредственно от Google:

    http://support.google.com/webmasters/bin/answer.py?hl=en&answer=35769

    Submit a Sitemap using Google Webmaster Tools. Google uses your Sitemap to learn about the structure of your site and to increase our coverage of your webpages.

    То есть наша помощь с помощью сайтмапа им не помешает (поскольку может оказаться, что мы лучше знаем структуру своего сайта и не надо парсить его - достаточно взять у нас готовый список)

    http://support.google.com/webmasters/bin/answer.py?hl=en&answer=156184&from=40318&rd=1

    You can create a Sitemap based on the Sitemap protocol, or you can submit a text file or RSS/Atom feed as a Sitemap. How to create a Sitemap.

    То есть если стоит задача скармливать им новости - можно RSS фид новостей и "самого читаемого" скармливать, например. А sitemap в моём понимании всё же не для этих задач.

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

  8. 2013-04-25 в 05:58:58 | Ruslan Brest

    Да, спасибо. Пару полезных мыслей появилось в результате. Действительно, редко кто использует приоритеты при автоматической генерации sitemap-ов. Можно эти идеи в более интеллектуальном генераторе сайтмапов поэксплуатировать, даже без анализа логов.

  9. 2014-01-22 в 08:54:45 | Александр Сорокин

    Появился еще один генератор sitemap, очень шустрый - http://opencartforum.ru/topic/30471-soforp-шустрый-sitemap/ :)

  10. 2015-09-10 в 17:52:25 | Константин

    Здравствуйте!

    Ссылка - Enterprise sitemap generator with sitemap index (openAndrew), free, появился в июле 2012 - не работает! Не подскажете, где теперь можно найти ее?

    Спасибо!

  11. 2015-09-10 в 17:57:09 | Константин

    •Optimize It - быстрый Google Sitemap для большого кол-ва товаров - автор Yoda, март 2013, 600 RUB - тоже уже не работает

  12. 2015-09-12 в 04:00:58 | Ruslan Brest
    Не подскажете, где теперь можно найти ее?

    В гугле. Третья или четвёртая ссылка сверху. Там и оригинальное описание, и возможность скачать архив. Не ленитесь, пожалуйста, пользуйтесь поиском.

Оставьте комментарий!

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Имя и сайт используются только при регистрации

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

Авторизация  Facebook. MaxSiteAuth. Loginza

(обязательно)