Вопрос
У меня есть приложение, которое опрашивает несколько источников RSS в Интернете.
Каков этикет при опросе чужих веб-серверов?Как часто проводить опрос и т. д.?
Каковы лучшие практики?
Решение
Использовать кэш HTTP. Отправить Etag
и LastModified
заголовки. Признать 304 Not modified
ответ. Таким образом, вы можете сэкономить много трафика. Кроме того, некоторые скрипты признают заголовок LastModified
и возвращать только частичное содержание (то есть. Только два или три новых деталей, а не все 30 или так).
Не опрашивать RSS от услуг, который поддерживает RPC Ping ( или другие PUSH службы, такие как PubSubHubbub ). То есть если вы получаете уведомления PUSH от службы, не должен опрашивать данные в стандартном интервале - это сделать один раз в день, чтобы проверить механизм все еще работает или нет (пинг может быть отключен, перенастроить, повреждено, и т.д. ). Таким образом, вы можете получить RSS только при получении уведомления, не каждый час или около того.
Проверьте TTL (в RSS) или заголовки управления кэшем (Expires
в ATOM), и не забирает, пока ресурс не истечет.
Попробуйте адаптироваться к частоте новых элементов в каждом отдельном RSS корме. Если на прошлой неделе было только два обновления, в частности корма, не забирает его более чем один раз в день. AFAIR Google Reader делает это. Р>
Понизить скорость в ночное время или другое время, когда трафик на ваш сайт является низким.
В конце концов, это сделать один раз в час. ;) Р>
Другие советы
FeedFetcher от Google утверждает, что опрашивает RSS-канал чуть реже одного раза в час.
От: http://code.google.com/apis/ajaxfeeds/documentation/
Частота сканирования ленты
Поскольку Google AJAX Feed API использует Feedfetcher, данные фида из AJAX Feed API не всегда могут быть актуальными.Сканер фидов Google («Feedfetcher») получает фиды с большинства сайтов реже, чем раз в час.Некоторые часто обновляемые сайты могут обновляться чаще.
Что ж, я собираюсь пойти туда, игнорируя сообщения, в которых говорится: «Google говорит, мы делаем», и сказать:так часто, как вам действительно необходимо.
RSS предназначен для того, чтобы держать вас в курсе событий.Если фид публикует 10 элементов в час, но показывает только пять, вы пропустите пять из этих элементов, и фид не будет служить своей цели.С таким же успехом ты мог бы вообще не попасть в него.
Конечно, вы не можете забить сервер запросами, но если они публикуют достаточно информации, чтобы вы могли запрашивать их раз в минуту, я не понимаю, почему неразумно поддерживать эту скорость.
Раз в час, если вы хотите просто следовать эмпирическому правилу (но ссылка объясняет некоторые лучшие варианты).
Я слышал частоту раз в час.
В Rss есть настройка TTL, поэтому на самом деле вам следует опрашивать только по истечении срока TTL.
Но я думаю, если они не добавят его в список, это их проблема, и вам следует опрашивать примерно раз в час.
Это не полный ответ, но обратите внимание на push-уведомления.
RSS-блог указывает на то, что передовой практикой является вопрос weblogs.com об изменившихся блогах.
Еще есть какой-то, э-э, шум по поводу пабсаб, способ подписаться на push-уведомления, имеющие некоторый импульс.
Отмечу, что твиттер использует (кастомный) X-RateLimit-Remaining
и X-RateLimit-Limit
заголовки (в ответе HTTP), чтобы указать максимальное количество авторизованных опросов для каналов Atom.Как-то жаль, что не использовали стандарт Expires
поле (действие которого происходит 30 лет назад :P) Я думаю, их реклама Cache-Control: no-cache
также исключает общее эвристическое время истечения срока действия, определенное в RFC 2616 (раздел 13.2.*).Еще больше жаль, что Atom, похоже, не предоставляет какого-либо стандартизированного способа узнать, как часто предлагается опросить канал.