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 に答える