rss - Evitar que la API de feeds de Google use el feed en caché
google-api google-feed-api (2)
Estoy usando Google Feed JSAPI para leer / analizar un feed. El problema es que cuando el feed cambia, las entradas anteriores dejan de ser válidas (los enlaces y las imágenes no funcionan), por lo que no puedo cargar una versión en caché del feed. Pensé que habría una opción al cargar el feed para no usar la versión en caché, pero no veo una. Mi solución es hacer agregar una variable (t) al final de la url de alimentación para que sea "única", pero esto parece raro (pero funciona). Alguien sabe de una mejor manera de hacerlo?
function onLoad() {
// Create a feed instance that will grab feed feed.
var feed = new google.feeds.Feed(feedLocation+"&t="+new Date().getTime());
// Request the results in XML (so that we can parse out all the info
feed.setResultFormat(google.feeds.Feed.XML_FORMAT);
//must set this - if you don''t, it defaults to 4
feed.setNumEntries(50);
// Calling load sends the request off. It requires a callback function.
feed.load(feedLoaded);
}
Esta respuesta podría llegar tarde, pero me encontré con esta publicación y obtuve la solución mediante el comentario pxpgraphics
. Para aquellos que necesitan invalidar el caché, esto lo hará. Tenga en cuenta que este ejemplo de código está extrayendo otros datos de la fuente RSS; modificar para sus necesidades
google.load("feeds", "1");
function initialize() {
var feedLocation = "http://feeds.bbci.co.uk/news/rss.xml";
/* Use the randomNum and the time to invalidate the Google cache and
fetch the latest articles.
*/
var randomNum = Math.floor((Math.random() * 10000) + 1);
var url = feedLocation + "?&t=" + new Date().getTime() + randomNum;
var feed = new google.feeds.Feed(url);
feed.setNumEntries(1000);
feed.load(function(result) {
if (!result.error) {
var container = document.getElementById("feed");
for (var i = 0; i < result.feed.entries.length; i++) {
var entry = result.feed.entries[i];
var div = document.createElement("div");
div.appendChild(document.createTextNode(entry.title));
div.innerHTML += "<br>" + entry.publishedDate;
div.innerHTML += "<br>" + entry.content;
container.appendChild(div);
}
}
});
}
google.setOnLoadCallback(initialize);
Este código supone que tienes este DIV
en la página:
<div id="feed"></div>
prueba feed.includeHistoricalEntries();
Podría resolver su problema.