フォーラム

RSSが更新されない (5 件の投稿)

  1. phiria
    メンバー
    1 year前の投稿 #

    wordpress3.0.1を使用してサイト作成を行っています。

    便宜上、「メインサイト」、「サブサイト」と呼びます。
    サブサイトの方はサブドメインで運用しています。

    アドレスで言うと・・・
    メイン:http://example.com
     サブ:http://sub.example.com
    という感じです。

    ------------------------------------------------------------

    サブサイトから下記のようなフィードを行っています。
    <link rel="alternate" type="application/rss+xml" title="サブサイトのフィード" href="http://sub.example.com/?feed=rss2" />

    ※headタグ内に定義
    ------------------------------------------------------------

    このフィードをメインサイトで受信し、表示したいのです。
    (サブサイトの最新情報をメインサイトに表示するということです。)
    表示はできているのですが、内容が最新のものではありません。
    ------------------------------------------------------------

    メインサイトでは下記のように受信しています。

    $rss = fetch_rss('http://sub.example.com/?feed=rss2');
    $maxitems = 5;
    $items = array_slice($rss->items, 0, $maxitems);
    ・・・以下、表示するHTML

    ------------------------------------------------------------

    フィードしているURL(http://sub.example.com/?feed=rss2)を
    ブラウザで見ると最新の情報が正しく表示されています。

    メインサイトで受信し表示しているのが、最新情報になりません。
    色々と手を尽くしたのですが、解決方法が分かりません。

    どなたかご存知の方がおられれば、ご教授お願いいたします。

    ブラウザはIE8、FireFox3で同じ現象を確認しています。
    ------------------------------------------------------------

  2. phiria
    メンバー
    1 year前の投稿 #

    追加情報なのですが・・・

    他のドメインから、サブサイトのRSSを取得して表示したら、
    最新のものになっていました。

    と言うことは、メインサイトの方はキャッシュのようなものが残っていて
    それを表示しているということになるのでしょうか?

    情報をお持ちの方がおられましたら、よろしくお願いいたします。

  3. jim912
    世話役
    1 year前の投稿 #

    phiriaさん、こんにちは。

    fetch_rss関数は、デフォルトで1時間のキャッシュを持つようになっています。
    キャッシュを利用しないようにするには、テーマのfunctions.phpか、wp-config.phpに

    define('MAGPIE_CACHE_ON', 0);

    と記述すれば、キャッシュの利用を止められるはずです。

    ただし、毎回RSSを読み込むのは表示速度の低下に繋がりますので、ある程度のキャッシュ時間は持たせておいた方が良いでしょう。

    キャッシュ時間の変更は、

    define('MAGPIE_CACHE_AGE', nnn );

    * nnnは、キャッシュの秒数

    で調整できます。

  4. phiria
    メンバー
    1 year前の投稿 #

    jim912さん
    返信ありがとうございます。

    お寄せいただいた情報を試してみましたが、
    結果は変わりませんでした・・・。

    情報ありがとうございました。

  5. maxline
    メンバー
    1 year前の投稿 #

    phiriaさんと同じ疑問を抱え、検索からこのページに辿りつきました。

    jim912さんのアドバイスをもとに、試行錯誤した結果、次の方法を思いつきました。

    $serial = time();
    $rss = fetch_rss("http://sub.example.com/?feed=rss2&version={$serial}");
    $maxitems = 5;
    $items = array_slice($rss->items, 0, $maxitems);

    要は、サーバがキャッシュを参照していることが原因ですので、毎回呼び出すURLを変えてみる、という試みです。

    わたくしの環境では、読み込む feed に「feed=rss2」のような他のクエリを必要としなかったため、うまくいきましたが、phiriaさんの状況では他の工夫が必要になるかもしれません。

    シリアル値の発行も、わたくしの方法はうまくないですね。
    もっといい方法があればと思案しています。

返信

ログイン しなければ投稿できません。

About this Topic

Tags