Какой размер слишком велик для XML-файла RSS-канала? - PullRequest
7 голосов
/ 16 марта 2011

Я внедряю RSS-канал для веб-сайта, и я не понимаю некоторые аспекты формата / размера / содержимого XML-файла для канала.

Я инициализирую сайт с помощьюпрошлые данные, которые берут свое начало с 1999 года (до этого момента не было ни одного фида), и в год будет добавляться только пара сотен элементов.

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

Итак, каков обычный обычай для этого?Ограничить это до последнего месяца?Текущий файл, содержащий более 900 элементов, составляет 1,5 МБ, и я ожидаю, что стоимость одного года будет примерно на 1/10 меньше или меньше.

Любые указания на это о том, какие принципы использовать и как реализоватьЭто?Я использую PHP, но мои данные достаточно сложны, я свернул свой собственный сценарий для записи файла (и он очень хорошо проверяется), поэтому я не могу использовать консервированное решение - мне нужно понять, что реализовать в моем собственномсценарий.

Ответы [ 2 ]

5 голосов
/ 08 июня 2011

Большинство потребителей синдикационных фидов ожидают, что фид будет содержать относительно недавний контент с ранее опубликованным контентом, который «падает» из фида. Количество содержимого, которое вы поддерживаете в фиде, обычно зависит от типа контента, который вы публикуете, но с ростом размера фида это может повлиять на способность клиентов фида получать и анализировать вашу информацию.

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

  1. Реализация Пейджинг и архивирование фидов , в соответствии с RFC 5005 Раздел 3 , поскольку пейджинговые фиды могут быть полезны, когда количество записей очень большое, бесконечное или неопределенное. Клиенты могут «просматривать» ленту новостей, получая доступ только к подмножеству записей ленты, если это необходимо.
  2. Логически сегментируйте ваш контент на несколько каналов и предоставьте автообнаружение каналам на вашем сайте.
  3. Реализация интерфейса службы на основе REST, позволяющего потребителям извлекать и фильтровать ваш контент в виде канала в формате Atom или RSS с представлением по умолчанию с некоторыми разумными значениями по умолчанию.

Вариант 1 - разумный подход, только если вы знаете тип клиентов фидов, которые будут использовать ваш фид, поскольку не все клиенты фидов поддерживают разбиение на страницы.

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

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

В то время как большинство клиентов с расширенным доступом к каналам будут извлекать содержимое канала асинхронно, клиенты, выполняющие синхронные (и потенциально частые) запросы на ваш канал, могут испытывать проблемы с превышением времени ожидания при увеличении размера вашего канала.

Независимо от того, в каком направлении вы идете, рассмотрите возможность применения Условного GET в ваших каналах; и понять потенциальных потребителей вашего синдицированного контента, чтобы выбрать наиболее подходящую стратегию. См. этот ответ , когда вы узнаете, какие форматы каналов синдикации вы хотите предоставить.

0 голосов
/ 08 июня 2011

Агрегаторы будут загружать файл повторно, поэтому важно ограничить размер. Я бы хотел, чтобы канал содержал либо 10 элементов, либо самый старый элемент в неделю, в зависимости от того, что дает больше записей, если только он не переопределен параметром GET. Конечно, это будет зависеть от фактического использования, которое вы видите от своих клиентов, а также от активности в самом фиде.

...