Mstudio
← ブログ一覧へ

RSS記事届かない、キャッシュかAtomどっち?5分で判断できる比較表

著者: マサシ読了時間: 7分
RSS記事届かない、キャッシュかAtomどっち?5分で判断できる比較表

こんにちは、マサシです。

設置したRSSの欄、きちんと最新の記事が出ているか確かめていますか。

多くの場合は、エラーが出ていないという理由だけで安心してしまいます。

私も同じで、取得に失敗していないからと、1か月以上そのままにしていました。

自分のサイトに、外部の更新情報やお知らせを自動で表示する欄を付けている方は少なくありません。

取引先のニュースや、業界団体の発表、提携先の最新情報を自動で拾う仕組みも、やり方は同じです。

このとき見ているのは「取得に成功したか」だけで、「何件取れたか」までは見ていないことが多いです。

記事が届かないまま気づかずに半年置いていても、エラー画面は出ません。

欄が空のまま、閉じた扉のように静かに止まっているだけです。

結論:フィードを直接開いて<entry>タグがあればAtom形式が原因

結論から言うと、フィードのURLを直接ブラウザで開いたとき、<item>でなく<entry>タグが並んでいれば、原因はAtom形式です。

HTTPのステータスが200でも、読み込む側が<item>だけを数えていれば、記事は1件も表示されないまま扱われます。

この見分け方が分かれば、エラーも出ないまま更新が止まっている事故を防げます。

実際に、自分のサイト運営で使っている自動取得の仕組みに、あるニュースサイトのフィードを足しました。

取得は毎回200で成功していましたが、1か月以上、項目を1件も取得できないままでした。

気づいたのは、足してから約1か月後です。

その間、取得のログは毎回「成功」と記録されていました。

成功の記録だけを見ていたので、項目の件数までは確認していませんでした。

開いて中身を見ると、<item>ではなく<entry>タグで書かれたAtom形式でした。

見方は簡単です。

該当のフィードURLをブラウザで直接開き、右クリックで「ページのソースを表示」を選びます。

出てきたXMLの中に<item>があればRSS、<entry>があればAtomです。

Atomは<entry>という要素で記事を表します(RFC 4287・2005年公開の仕様)。

https://www.rfc-editor.org/rfc/rfc4287

RSS 2.0は<item>、Atomは<entry>と、要素名がそれぞれ異なります。

RSSの<item>だけを数える仕組みだと、Atom形式のフィードはいつも記事が表示されないままになります。

自分のサイトで外部の更新情報を自動で表示する欄を使っているなら、同じ落とし穴があります。

多くの表示用の仕組みは、RSS 2.0の<item>を前提に作られているためです。

判断が分かれるのはこの3点

  • フィードの中身が<item>か<entry>か
  • 記事が届かなくなったのが、追加した直後からか、途中からか
  • 他の取得先(別のフィードリーダーやツール)でも同じく届かなくなるか

1つ目は、ブラウザでフィードURLを直接開けば分かります。

2つ目は、自分の記録(追加した日付のメモや、台帳に残した履歴)と見比べます。

記録がなければ、「最近まで出ていたか」を覚えている範囲で判断します。

3つ目は、同じフィードURLを別のツールやサービスに読み込ませて、同じように届かなくなるかを見ます。

別のツールでは正しく件数が出るなら、原因は取得する側の設定(キャッシュなど)です。

どのツールでも届かないままなら、原因はフィード自体の形式(Atom)です。

この3点を、下の判定表に当てはめて確認します。

判定表

自分の状況を表の2列に当てはめて、当たっている列の「直し方」を試します。

両方の列に少しずつ当たるときは、まず「届かなくなった時期」を優先して判断します。

追加した直後からずっと届いていないなら、途中で何かが変わったわけではないので、Atom形式の可能性が高いです。

比べる項目キャッシュが原因のときAtom形式が原因のとき
フィードURLを直接開いたとき記事は出るが、日付が少し古い記事は出るが<entry>タグで書かれている
取得のHTTPステータス200(正常)200(正常)
届かなくなった時期途中から(最近まで出ていた)追加した直後から
直し方キャッシュの保持時間を短くする、または消す<item>と<entry>の両方を読む設定にする

RSS記事が届かないときの判定表(キャッシュが原因かAtom形式が原因かを比べる3行の表)

WordPressの標準のキャッシュ保持時間は43200秒(12時間)です(wp_feed_cache_transient_lifetimeの既定値)。

https://developer.wordpress.org/reference/hooks/wp_feed_cache_transient_lifetime/

12時間待っても表示が変わらないなら、キャッシュではなくAtom形式を疑います。

キャッシュが原因だった場合、設定を直してもすぐには反映されないことがあります。

一度キャッシュを消してから、もう一度フィードを取得し直すと、確認が早く進みます。

Atom形式が原因だった場合は、キャッシュを消しても届かないままです。

キャッシュを消しても変わらなければ、それ自体がAtom形式である証拠になります。

例外:フィードのURLそのものが間違っているとき

判定表のどちらにも当たらず、フィードURLを直接開いても何も表示されない場合は、URLの入力ミスか、リンク先の変更を先に疑います。

この場合は<item>も<entry>もそもそも存在しないので、判定表より前に確認する手順になります。

フィード元のサイトのトップページから、RSSやフィードへのリンクを探し直すと、正しいURLが見つかります。

サイトのリニューアルでURLの構造が変わり、以前のフィードURLがそのまま無効になっている場合もあります。

その場合は、404や403のエラーがブラウザに出るので、判定表の確認に入る前に気づけます。

やめた判断

以前は、取得のHTTPステータスが200なら「取得できている」と判断して、それ以上は確認していませんでした。

気づかなかった1か月の間、項目の数を一度も数えていなかったのが原因です。

今は、フィードを足した直後に1回、項目が1件以上あるかを自分の目で数えるようにしています。

具体的には、フィードを足した当日と、1週間後、1か月後の3回、件数を見る日を決めています。

件数を見る習慣を決めてからは、記事が届かないまま気づかずに放置することがなくなりました。

ステータスだけを見て安心する判断は、もうやめました。

件数を数える作業は、1分もかかりません。

その1分を惜しんだ結果が、1か月以上気づけなかった事実だったと考えると、割に合わない選択でした。

同じテーマの記事として「WordPressサイトを速くする7ステップチェックリスト(初心者でもできる)」も置いています。

自分でやるのが不安なときは

WordPressの更新やバックアップを、毎月まかせたい方へ。

WordPressの更新やバックアップを、毎月の保守としてお引き受けしています。

更新のたびに表示が崩れないか心配な方、毎月の確認に時間を取れない方に向いています。

今のサイトがどんな状態か分からなくても大丈夫です。

一度拝見して、必要な守りだけをご提案します。

相談は無料です。

サイトの保守・運用

なにか引っかかっていることがあれば。

サイトまわりのことなら、だいたい答えられます。

RSSフィード 取得できない|キャッシュかAtomどっち?5分で判断 | Mstudio