9

我正在使用Google Feed JSAPI来读取/解析提要。问题是,当提要更改时,以前的条目变得无效(链接和图像不起作用),因此我无法加载提要的缓存版本。我认为在加载提要时可以选择不使用缓存版本,但我没有看到。我的解决方案是在提要 url 的末尾添加一个变量 (t),因此它是“唯一的”,但这看起来很老套(但它有效)。有人知道更好的方法吗?

    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);
    }
4

2 回答 2

2

这个答案可能来晚了,但我遇到了这篇文章并使用pxpgraphics评论得到了解决方案。对于那些需要使缓存无效的人,这将做到这一点。请注意,此代码示例正在从 RSS 提要中提取其他数据;根据您的需要进行修改。

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);

此代码假定您DIV在页面上有此代码:

<div id="feed"></div>
于 2015-05-13T19:21:09.957 回答
0

尝试feed.includeHistoricalEntries();它可能会解决您的问题。

于 2013-01-30T22:40:13.317 回答