LINEのOGPキャッシュがクリアできない問題
12/20/2019

結論
- OGPが正しく出力されているか確認
- もし、OGPが正常なのに表示されないならキャッシュの更新を待つ必要がある
- 画像・説明・タイトルを変更することでキャッシュの更新を早めることができる
- 急いでいるならURLの末尾に?を入れるだけでも解決する
- シビアな案件では、シェアボタンのURL末尾に?日時(Unixtime)を入れることで対策
経緯
お客さんからブログ記事をシェアした時、LINEでOGP画像が表示されないと報告があり、調査してみた。お客さんに確認すると、特定の記事のみで発生しているとのことだった。
サイトのソースコードを見ると、問題の記事・正常な記事共にもOGPは正しく出力されていた。 (形式については下のリンクを参照)
トークとタイムライン内のURLプレビューはどのようにして生成されますか。
キャッシュが怪しいのでクリアする方法を調べてみると、下記の記事に行き当たった。
Facebook, Twitterのように、任意のタイミングでキャッシュがクリア可能だが、LINEはそのような機能を提供していないらしい。
調査
先ほどの LINEのOGP画像のキャッシュクリアで手こずったのでメモ によると、画像の更新のみで20時間程度とあった。
そこで、タイトル修正前にLINEにURLを投稿しキャッシュさせた後、タイトルを修正して投稿をすることで、どれくらいの期間でキャッシュが更新されるか調査を行った。
可能であれば、自動で定期的にURLを投稿するのが望ましかったが、LINE Notifyを使うとOGPが出現しなかったので、以下の調査は、すべて手動で投稿することで行っている。

まず、タイトルのみ修正した場合、観測できた範囲で25時間程度でキャッシュの更新を確認した。
LINEに問い合わせた人の情報によると...
URLを送信した際に表示されるプレビュー内容の情報を変更した場合、画像のみの変更であれば2週間程のお時間を要します。画像のURLや説明などの変更をあわせて行っている状態であれば、1~2日程で情報が更新されます。(http://w3q.jp/q/4465)
とあり、複数の項目を更新することで、キャッシュの更新が早くなる可能性が示されている。
そこで、画像・タイトル・概要を変更しさらに調査したところ...

12時間程度で情報が変わっており、いくつかの項目を合わせて更新することで、キャッシュの更新を早めることができるという情報を裏付ける結果となった。
記事を更新した直後など、何らかの原因でOGPが意図通り読み込まれなかった場合には、キャッシュが効いてしまい思った通りの形式にならない現象が発生し得る。
キャンペーンLPだったら致命的なので、サイト公開前に入念にチェックする必要がある。もし、頻繁に内容が変わるのであれば、URL末尾にUnixtimeをつける等の対策も有効だろう。