Предотвратить использование API фида Google для использования кешированной фиды

Я использую Google Feed JSAPI для чтения/разбора фида. Проблема в том, что при изменении фида предыдущие записи становятся недействительными (ссылки и изображения не работают), поэтому я не могу загрузить кешированную версию фида. Я думал, что при загрузке фида не будет использовать кешированную версию, но я ее не вижу. Мое решение состоит в том, чтобы добавить переменную (t) в конец URL-адреса канала, чтобы она была "уникальной", но это кажется взломанным (но оно работает). Кто-нибудь знает лучший способ сделать это?

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

Ответ 1

Этот ответ может появиться позже, но я столкнулся с этим сообщением и получил решение, используя комментарий 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>

Ответ 2

try feed.includeHistoricalEntries(); Это может решить вашу проблему.