Yandex & django sitemap
Сегодня столкнулся с тем, что yandex выдавал ошибку, когда я пытался скормить ему sitemap.xml через http://webmaster.yandex.ru/. Причина отказа, как было установлено, долгая генерация файла с картой сайта. Проблема решается просто: нужно кэшировать генерируемый sitemap: предварительно записать его в кэш и затем уже скармливать яндексу.
Если на сайте кэширования ранее не было вообще, то самый простой способ настроить кэш — это использовать файловый backend.
Пишем в settings.py:
CACHE_BACKEND = 'file:///tmp/domain.com'
В файле urls.py заворачиваем генерацию sitemap в cache_page декоратор
from django.views.decorators.cache import cache_page
from django.contrib.sitemaps.views import sitemap
from project.sitemaps import ProjectSitemap
sitemaps = {
'site': ProjectSitemap,
}
urlpatterns = patterns('',
(r'^sitemap.xml$', cache_page(sitemap, 60 * 30), {'sitemaps': sitemaps}),






Comments
Проблема не решена. Потом когда придет Яндекс во второй, третий раз, чтобы заново проинексировать sitemap, срок кэша истекет.
А что мешает генерировать с нужным периодом? Или же вообще добавить в крон генерацию.
Так не только яндекс sitemap забирает. Гугля. Яху, скорее всего, тоже. Ещё какие-нибудь черти :-)
На самом деле, что будет потом меня уже не сильно волнует, если яндекс один раз потерпит неудачу, надеюсь, придёт потом повторно. Главное, что удалось ему файл скормить в первый раз т.к. сайт новый совсем.
На Wordpress блогах делают так, генерят при каждом новом постинге. Вот тут бы тоже, подвесить на событие о новом посте.
Учитывая тот факт, что у меня время кэша 30 минут, то через тридцать минут после создания поста его ссылка заведомо будет в сайтмапе. Мне вообще показалось, что вы с пингом путаете )
Не пинг это для быстрой индексации нужен.)
Хы, я хоть и на WP, но об этом только сейчас услышал :)
ААААА!!!! ИСТЕЧЕТ, а не ИСТЕКЕТ!!! Извините, но я не могу удержаться. А вообще спасибо за решение — с такой проблемой не столкнулся, но лучше реализую=)
Я даже не знал об этом. Интересно, кешировать файл sitemap