Я за эти выходные я дописал оригинальный RSS приблизительно до такого же уровня, как и твой. Не было authentication и ETag, а вот оптимизацию я реализовал подобным образом, в том числе и ключ на базе данных (разбирались почему query отрабатывает восемь секунд - сперва думали оптимизить под mysql4, а потом решили всё-таки тряхнуть стариной и посмотреть на ключи-индексы).
Писал под свои нужды, посему никаких конфигов там не было.
У меня уже был RSS 1.0 и нас интересовал оффлайн экспорт конкретных форумов для оффлайн чтения. После теста кучи ридеров (его запостю позже) было решено остановится на RSSBandit (который начал тормозить после тысяч itemов) и SharpReader, в котором хоть и нет газеты, зато он очень шустр и поддерживает все необходимые фичи.
Вчера наткнулся на твою реализацию и перенёс свой template под неё. Не было причин тратить время на свою - лучше поделюсь инфой:
Сегодня я проведу анализ <b>фидридеров</b> под Win32. Тестируются RSS 2.0 фиды. Я сделал модули для форума phpBB и старого phpNuke . Если для phpNuke задача была - экспортировать все данные в человеческий формат один раз, то с phpBB - постоянное выплёвывание полных данных. Модуль пока базируется на старом тормознутом скрипте, который из-за мощного SQL запроса подвешивает мой комп на пол секунды. Время исполнение того самого query - 7 секунд. Есть две возможности это дело прооптимизировать - переход на фичи MySQL4 или оптимизация на уровне ключей и индексов таблиц.
Спеки RSS 2.0 можно почитать <a href="go.php?to=http%3A%2F%2Ffeedvalidator.org%2Fdocs%2Frss2.html">здесь</a>.
Зачем форуму RSS? Модераторы и администраторы, да и фанаты форума всегда смогут быть в курсе всех постов или отдельных разделов. RSS2.0 для этого подходит довольно достойно, однако невозможность построения древовидных структур в данном случае - зло.
В этом исследовании я буду искать идеальную читалку (ещё лучше - аггрегатор) с полной реализацией RSS2.0 спецификации. Она должна каким-то боком поддерживать древовидную структуру форума, а так же иметь мощнейший сортинг и поиск с фильтрами.
За время исследований от моих рук пострадали три десятка читалок. Собственные фиды претерпели немалые изменения.
Вот выписка некоторых гайдлайнов, которые были поняты и собраны за всё время:
0) Молитесь на ETag и If-Modified-Since/Last-Modified.
1) Генерить RSS нужно статически. Если это форум, то интервал нужно подстраивать под себя. У меня это будет делаться раз в 10 минут.
Если это блог или сайт, то апдейт должен происходить после операции с новостями и/или комментариями. К сожалению популярнейшие блоги на данный момент полностью динамичны и о кешировании ничего не знают.
2) Если ваш комьюнити технически не продвинут и не желает уходить с убогочиталок, вам придётся отказаться от category и author, а возможно и comments. Засуньте всё это внутрь description.
3) enclosures - добро, однако их поддерживают считанные единицы ридеров. Этот аргумент может быть очень весомым в случаях с аттачами.
4) Всегда держите упрощённую RSS 0.9x версию фида.
5) В RSS 2.0 в отличии от RSS 0.9x СТОИТ использовать CDATA. Но его надо использовать с умом.
6) textInput не поддерживается ни одной основной читалкой
7) image в некоторых читалках раздражает. он может быть не в хеадере, а внутри каждого поста причём с кучей переносов строк. Из-за него не будет виден контент без скроллинга.
В моём RSS 2.0 фиде на момент тестирования отсутствовали:
<b>основные элементы channel</b>
pubDate - реализован только lastBuildDate
category - просто прописан "Forum". требуется каталогизация по Syndic8.
docs & cloud - отсутствуют
image - отсутствует
skipHours & skipDays - форум работает круглосуточно, скипов нет
<b>элементы item</b>
enclosure - пока не реализован
source - не имеет смысла на форуме
Все остальные RSS 2.0 фичи реализованы, валидатор ругается только на отсутствие мыла у каждого автора, но мне на это плевать. За почти десяток лет работы с вэбом я понял, где стоит читать спеки как спеки, где реки как спеки и где спеки как реки.
Особенности реализации.
Пока всё что можно суётся в CDATA. Естественно, для оптимизации в коротких полях аля author, требуется смотреть - присутствуют ли определённые символы или нет.
В phpNuke экспортном фиде даты были не в RFC-822 формате, а в ATOMе, посему RSSOwl отказывался показывать контент фида, а Abilon чего-то чудил. Пришлось исправить.
Перейдём к обзору читалок.
<b>RSSReader 1.0.91.0 beta</b>
Поддержка category отсутствует.
Каждый раз при смене опций просмотра перегружает картинки (вроде форумных смайликов) с сервера из-за регенерации страницы для IE. Отключаем парсинг смайликов в фиде.
Отсутствует форс рефреша.
Приемущества ридера - realtime keyword search. Фильтрует по мере набирания.
<i>Вылетает.</i>
<b>Abilon News Aggregator 2.5.3 build 196</b>
Первым отреагировал на дату (голый GMT без смещения) и сконвертил время. Фиксим gmdate.
Как я не мучался, он не стал показывать ни автора (пробовал убрать CDATA и сделать full-formed author вроде a@b.com (nick)), ни категорию.
Очевидно читалка написана русскими, посему английский язык интерфейса максимально коряв.
Поиск реализован немного заморочено - через субменю.
Приемущества - неочивидная поддержка оффлайн файлов, интеграция постинга в блоги и поддержка стилей, позволяющая полностью отображать стиль форума. Поддержка разных сервисов.
<i>Вылетает.</i>
<b>Opera 8</b>
Новая версия броузера - глюкало ещё то (на четырёх разных компах). Вылетел при интенсивном нажатии клавиш NEW/DELETE/EDIT в режиме редактирования списка фидов. Frustrating.
На мёртвые фиды реагирует погано, после edit дуплицирует что-то в списке. В общем - глюков хватает.
Однако...
Категорий нет. Общей ленты (режим газеты) - нет. Поиск оригинален, можно создавать фильтры. ИМХО в какой-то седьмой версии глючная реализация поверх M2 работала даже лучше.
Были надежды на поддержку textInput, однако здесь присутствует только возможность отсылки комментария на email из поля author (через встроенный клиент).
Форсирование апдейта отсутствует.
<i>Вылетает.</i>
<b>FeedReader 2.90</b>
Старичок. По дефалту ставит кучу фидов, которые нельзя удалить одним махом. Шорткатов для удаления фолдеров нет, а сами фиды не всегда удаляются по CTRL+DEL.
Слёту не стал поддерживать русский нигде, кроме имени фида.
В моём фиде откуда-то оказался кусок чужого стёртого фида.
Не показывает author, зато показывает keyword!
Насколько я помню, этот ридер ещё 2 года назад очень сильно leakал память.
<i>Вылетает.</i>
<b>SharpReader</b>
Грузился секунд 30 и сразу натянул мне каких-то новостей из 5 фидов. В таскбаре не появился, но потребовал стать дефалтной читалкой. Потом грузился с пол пинка.
Поддерживает цивильный парсинг HTTP error.
Толком показал author & subject (keyword).
Search почему-то послал на Feedster. Оказывается надо активировать Filter. Грамотно сделан.
Ленты нет.
Муля: быстрый просмотр фида без подписки.
Диагноз: мило и супер минималистично. Обладает большинством необходимых фич.
Поддерживает CommentAPI...
Требует .NET 1.1.
<i>Выходит в финал.</i>
<b>JetBrains Omea Reader 1.0.4</b>
Тяжёлый и неповоротливый. Пока бесплатный. Начал ругаться о конфликте билда 3xx и 4xx. Subscribe to feed запрятан и является секретной фичей.
Поддерживает конфигурацию количества колонок (все фичи RSS 2.00).
Хорош, но очень тяжёл, перегружен и вовсю leakает.
<i>Вылетает.</i>
<b>RSS Bandit</b>
<u>Всё что надо. ОЧЕНЬ МЕДЛЕННЫЙ.</u>
Выходит в финал.
<b>Sauce Reader</b>
Super slow. Хорош, но поле category отсутствует.
<i>Вылетает.</i>
<b>RSS Owl</b>
Ничего особенного. Ничего нужного не конфигурируется.
<i>Вылетает.</i>
<b>Newz Crawler</b>
Платный, но по всей видимости рулит.
Поиск И фильтр, все колонки (и author, и category).
Приличный блоггер, немного некорректно понимающий переводы строк вместо <br />.
<i>Выходит в финал.</i>
<b>MyNewsToGo</b>
Слишком казуальный и прилизаный, но обладает всеми фичами. <b>Платный.</b>
<i>Стоит попробовать ламерам, любящим софт с рюшечками.</i>
Краткая mass выписка. Ставил, импортил, first impression miniviews:
<b>Awasu</b> - overbloated sucking shit, <b>Aggie</b> - weird crap, <b>BlogExpress</b> - can't parse, <b>Bottom Feeder</b> - no russian, <b>Custom Reader</b> - no russian, <b>CITA</b> - overbloated & looks like win 3.11, <b>Net Newz</b> - weird tray boring no russian, Lektora - weird browser shit, <b>Folio Furst</b> - uberhuge annoyinh instacrash, <b>Nutshell</b> - VB crap, <b>Pluck</b> - IE weirdo shit (CNET choice), <b>Vox Lite</b> - shit except enclosure support, <b>NewsDesk</b> lacks features, <b>NewzSpider</b> - empty shit, NewsAnts - chinese sux, Newzie - interesting HEAVY news center.
После всех тестирований остался RSSBandit, обладающий исчерпывающими фичами, да SharpReader, не тормозящий в отличии от монстра-бандита.
NewzCrawler некорректно реагирует на смену description поста и дуплицирует item...







