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}),