Если вы ищете что-то из коробки, есть несколько проектов на RIAForge, быстрый поиск поднял эти два, но я думаю, вы могли бы найти больше:
http://cfrss.riaforge.org/
http://rssville.riaforge.org/
Если вы готовитесь сами (что, как я знаю, вы сказали, что не предпочитаете), не могли бы вы просто сделать запрос на подачу следующим образом:
<cfhttp
url = "http://example.com"
resolveurl="no"
throwOnError = "yes"
timeout = "10" >
</cfhttp>
и анализ результатов:
<cfset feedData = CFHTTP.FileContent>
<cfset xmlData = XMLParse(feedData)>
Перебрать:
<cfset result = queryNew("title,description")>
<cfset items = xmlSearch(xmlData,"//*[local-name() = 'item']")>
<cfloop index="x" from="1" to="#arrayLen(items)#">
<cfif structKeyExists(items[x],"title")>
<cfset node.title = items[x].title.XmlText>
<cfelse>
<cfset node.title = "">
</cfif>
<cfif structKeyExists(items[x],"description")>
<cfset node.description = items[x].description.XmlText>
<cfelse>
<cfset node.description = "">
</cfif>
<cfset queryAddRow(result)>
<cfset querySetCell(result,"title",node.title)>
<cfset querySetCell(result,"description",node.description)>
</cfloop>
Выход:
<cfoutput query="result">
<ul>
<li><strong>#title#</strong> - #description#</li>
</ul>
</cfoutput>
Очевидно, не проверено, но идея, тем не менее. Использовал что-то похожее на это, чтобы получить мои последние вкусные закладки. Что касается кэширования, есть несколько разных способов справиться с этим. Я бы, вероятно, запустил запланированное задание, чтобы поразить этот файл и записать вывод в отдельный включенный файл. Я уверен, что есть лучшие способы, но это быстрый и грязный, IMO.