RSSフィードを条件付きで取得する
SerendipityはHTTPキャッシュと互換性のある方法をサポートしているので、RSSフィードには最新のリクエスト要求から変更のあった項目だけを表示できます。
通常RSSリーダーはあなたのRSSフィード (標準では15項目) を取得します。
そして、取得した項目のタイムスタンプを記憶します。
RSSリーダーがフィードを更新する時 (通常は1時間後) までは、Serendipityは最終更新時から比べて新しいまたは更新のあった全ての項目を出力するだけです。
もしも更新されたエントリが無い場合、Serendipityは304ヘッダ (Not Modified) を出力するだけなので、定期アップデートによってクライアントとサーバの両方に起こる大量の帯域幅を節約します。
技術的には、RSSリーダーは特別なETagヘッダーと同様にRSS出力のLast-Modifiedヘッダも取得します。
この両方があなたの記事を基とした最終更新時刻のセットとなります。
次の取得で受信ヘッダはIF_MODIFIED_SINCE (= 最終更新時刻) とIF_NONE_MATCH (= ETag) ヘッダとして送られ、あなたのRSSフィードに影響を与えます。
これでクライアントとサーバサイドの両方における帯域幅を節約します。
あなたは通常フィードごとに15項目しか確保できないので、あなたのフィードを購読しているのに最新の記事に追いつけないユーザーは、いくつかの記事を見逃すかもしれません。
もしIF_MODIFIED_SINCEヘッダを提供しているのなら、クライアントは全項目を知ることができます (留意点:乱用防止のため最大でも50記事)。
もしどんな理由にせよこの機能を永遠に無効にしたいのなら、rss.phpファイルの1行目に
$_REQUEST['nocache'] = true と追記するか、
フィードのリクエスト変数に&nocache=true を加えてください。
こんな感じです。
http://example.host/serendipity/rss.php?version=2.0&nocache=true
もちろんキャッシュヘッダが何も提供されていなければ、通常のフィードの動作に影響はありません。 ですからもしアプリケーション内のブログから記事を埋め込むのにフィード配信機能を利用しているのなら、アプリケーションを調整して、nocache 変数をSerendipityに送るか、またはキャッシュ用のヘッダを送らないようにしてください。
あなたのブログからフィードのURLの変数を追加できるように配信プラグインを構成することが可能です。