Как эффективно служить крупным картам сайта в django

У меня есть сайт с приблизительно 150K страницы в его карте сайта. Я использую индексный генератор карты сайта для создания карт сайта, но действительно, мне нужен способ кэшировать его, потому что, создавая 150 карт сайта из 1 000 ссылок каждый является жестоким на моем сервере. [1]

Я МОГ кэшировать каждую из этих страниц карты сайта с memcached, который является тем, что я использую в другом месте на сайте... однако, это - столько карт сайта, что он полностью заполнил бы memcached.... так, чтобы не работал.

То, что я думаю, что мне нужно, является способом использовать базу данных в качестве кэша для них и только генерировать их, когда существуют изменения в них (который в результате индекса карты сайта означает только изменять последние несколько страниц карты сайта, начиная с остальных всегда то же.) [2], Но, почти я могу сказать, я могу только использовать один бэкенд кэша с django.

Как у меня могут быть эти карты сайта, готовые к тому, когда Google прибывает-crawlin', не уничтожая мою базу данных или memcached?

Какие-либо мысли?

[1] Я ограничил его 1 000 ссылок на страницу карты сайта, потому что генерации макс., 50 000 ссылок, просто не происходило.

[2] например, если у меня есть sitemap.xml? page=1, page=2... sitemap.xml? page=50, я только действительно должен изменить sitemap.xml? page=50, пока это не полно 1 000 ссылок, затем я могу он в значительной степени навсегда, и фокусироваться на странице 51, пока это не полно, кэшируйте его навсегда и т.д.

РЕДАКТИРОВАНИЕ, 12.05.2012: Это продолжило быть проблемой, и я наконец угробил платформу карты сайта Django после использования ее с кэшем файла приблизительно в течение года. Вместо этого я теперь использую Solr для генерации ссылок, в которых я нуждаюсь в действительно простом представлении, и я затем выдаю их к шаблону Django. Это значительно упростило мои карты сайта, заставил их работать очень хорошо, и я готов приблизительно к 2 250 000 ссылок на данный момент. Если Вы хотите сделать это, просто проверить шаблон карты сайта - это все действительно очевидно оттуда. Вы видите код для этого здесь: https://bitbucket.org/mlissner/search-and-awareness-platform-courtlistener/src/tip/alert/casepage/sitemap.py

16
задан mlissner 17 May 2012 в 04:47
поделиться

2 ответа

У меня была похожая проблема, и я решил использовать django для записи файлов sitemap на диск в статические носители и заставить веб-сервер обслуживать их. Я решил регенерировать sitemap каждые пару часов, поскольку мой контент не менялся чаще, чем сейчас. Но это будет зависеть от вашего контента, как часто вам нужно записывать файлы.

Я использовал пользовательскую команду django с заданием cron, но curl с заданием cron проще.

Вот как я использую curl, и у меня apache отправляет /sitemap.xml как статический файл, а не через django:

curl -o /path/sitemap.xml http://example.com/generate/sitemap.xml
9
ответ дан 30 November 2019 в 22:09
поделиться

Хорошо - я нашел дополнительную информацию об этом и о том, что такое Amazon делает с их 6 миллионами или около того URL.

Amazon просто создает карту на каждый день и добавляет к ней:

  1. новые URL-адреса
  2. обновленные URL-адреса

Таким образом, это означает, что в конечном итоге они получают множество карт сайта, но поисковый бот будет только смотреть самые последние - так как обновленные даты недавние. Я понимал, что нужно обновить карту - и не включать URL-адрес более одного раза. Думаю, это правда.Но Amazon обходит это, поскольку карты сайта больше похожи на журнал. URL-адрес может появиться на более поздней карте сайта - поскольку он может быть обновлен - но Google не будет смотреть на старые карты, поскольку они устарели - если, конечно, он не выполняет серьезную переиндексию. Этот подход имеет большой смысл, поскольку все, что вам нужно сделать, это просто создать новую карту - скажем, каждый день нового и обновленного контента и пинговать его в Google - таким образом, Google нужно только проиндексировать эти новые URL-адреса.

Этот подход к журналу является синхронизацией с кодом, поскольку все, что вам нужно, это статическая модель хранилища данных, в которой хранятся данные XML для каждой карты. ваше задание cron может построить карту - ежедневно или еженедельно, а затем сохранить необработанную XML-страницу в поле большого двоичного объекта или что-то еще. затем вы можете обслуживать страницы прямо из обработчика, а также карту индекса.

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

Я также подумал, что можно затем превратить карты на неделю в карту недели и карты на 4 недели в месяц - так вы получите карты на месяц, карту на каждую неделю в текущем месяце. а затем карта за последние 7 дней. Предполагая, что все даты поддерживаются, это уменьшит количество карт, приведя в порядок процесс - я думаю о сокращении 365 карт на каждый день года до 12.

Вот pdf-файл с картами сайта и подходами. используется Amazon и CNN.

http://www.wwwconference.org/www2009/proceedings/pdf/p991.pdf

9
ответ дан 30 November 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: