タイトルの通りです。
Twitter などでだいたいの方が解消されているとは思いますが、念のため明文化しておきます。
経緯と原因
ツイートの通りですが、NX-Jikkyo では Cloudflare という、Web サイトの配信を高速化するための CDN を、ブラウザと Web サーバーの間に挟んでいます。
Let’s Encrypt で HTTPS 証明書を維持するのが面倒くさいこともあり、このブログも含めて、tsukumijima.net のほぼすべての HTTP リクエストは、Cloudflare の CDN サーバーを通して提供されるように構成しています。
さて今回の原因は、2025/01/10 に、なんらかの理由で断続的に Cloudflare から tsukumijima.net の各サブドメイン以下のページで HTTP 301 リダイレクト (恒久リダイレクト) が返される謎の障害が発生した結果、ブラウザにリダイレクトによる(?)不正なデータがキャッシュされ、それ以降の NX-Jikkyo の Web サイトの更新処理自体が動かなくなってしまったことにあります。
301 リダイレクトは経験上ブラウザが強力にキャッシュするようで、キャッシュを削除しない限り、リダイレクトしない状態には戻らないことが多いです。
これを解決するには、大変お手数ですが、ユーザーの皆さま各自でブラウザのキャッシュを削除いただき、強制リロードをかけていただく必要があります。
個人的にも心苦しい限りですが、私の PC やスマホでは全く再現できていません。
また Cloudflare から不正なデータが返される障害自体はすでに収まっている(全体的に起きた障害ではないのか、他の人の Cloudflare アカウントでは発生していない模様)こと、NX-Jikkyo が PWA アプリである関係で、こちらからキャッシュをパージすることが技術的に不可能な状況です。
NX-Jikkyo は PWA という、Web サイトをネイティブアプリのように使える技術を採用しています。
PWA アプリは通常の Web サイトと違い、Web アプリを動かすための HTML / CSS / JavaScript (プログラム) がブラウザ側に強力にキャッシュ(インストール)されます。
これにより Web サイトがダウンした場合でも、常にローカルのアプリプログラムが起動できるような仕組みになっていますが、一方で PWA アプリのアップデートは通常 PWA アプリのプログラムからしか行えない(ブラウザのキャッシュシステムは使用されない)仕組みです。
このため、PWA アプリに何らかの問題が生じ、自己アップデートが不可能になった場合は、PWA のサイトデータを消去し、再度新規にインストールする必要があるわけです。
誤解されている方もいらっしゃるかもしれませんが、2024/01/13 現在 NX-Jikkyo は通常通り運用されており、コメントも正常に表示されています。
NX-Jikkyo 自体の不調ではなく、Cloudflare の障害の影響がユーザーの皆様のブラウザに残ってしまっており、ブラウザキャッシュを削除しない限り復活しないことが原因の問題になります。
対処法
ちなみにこの手順は、KonomiTV など他の PWA アプリがなんらかの理由で正常に動作しなくなった場合にもご活用いただけます。ぜひ覚えておいてください。
PC: Chrome 系ブラウザで強制リロードを試す
詳細はこちらの記事に譲りますが、実は Chrome (Microsoft Edge や Brave も同様です) では、3種類のリロード方法があります。
このうち「キャッシュの消去とハード再読み込み」を NX-Jikkyo のサイトを開いた状態で実行すると、サイトが再び表示できるようになった、という報告を多数いただいていますので、まずはこれをお試しください。
具体的には、Windows では F12 キー、または「その他のツール」→「デベロッパーツール」から、Chrome のデベロッパーツールを開きます。
この状態でリロードボタンを右クリックすると、「キャッシュの消去とハード再読み込み」という項目が出てきます(隠しメニューです!)ので、これをクリックするとおそらく直るはずです。
PC / Android Chrome: サイトデータを削除してみる
上記手順でうまくいかない場合、あるいは Android Chrome の場合は、以下の手順でサイトデータを削除してください。
この手順を実行すると、NX-Jikkyo で行った設定データはすべて削除されます。
事前に、NX-Jikkyo の設定 →「全般」→「設定をエクスポート」から、設定データが記述されたファイルをダウンロードしておくことを推奨します。
ダウンロードされる NX-Jikkyo-Settings.json は、その下の「設定をインポート」からインポートできます。
意外と知られていなさそうですが、URL バーの左にある設定アイコンをクリックすると、上のように「サイトの設定」へのリンクが現れます。
Android Chrome の場合も同様です。
「Cookie とサイトデータ」をクリックしてください。
ここをクリックすると上のような画面が表示されるので、「データを削除」を押して、サイトデータを削除します。
Android Chrome ではこのような画面になります。
その後再読み込みすると、NX-Jikkyo が利用できるようになるはずです。
最終手段: ブラウザのキャッシュ自体を全部消す
それでも解決しない場合、あるいは iOS Safari の場合は、ブラウザのキャッシュ自体を全部消す必要があります。方法はおそらくお分かりかと思いますので割愛します。
ここまでやれば基本解決するはずですが、もし解決しない場合は、別のブラウザや、同じブラウザの別プロファイルを使うことをお試しください。
普通はキャッシュ削除で直るはずですが、本当にどうしてもダメな場合(おそらくそちら側の操作ミスだとは思いますが)の最終手段です。
ブラウザキャッシュはブラウザやプロファイルごとに管理されているので、別ブラウザや別プロファイルにすればキャッシュの問題から解放されるというわけです。
おわりに
いろいろすみません・・・でも私が書いたプログラムのバグではなく、使ってた Cloudflare というサーバー事業者が多分自分のとこだけ一瞬バグったせいでこうなったので、ふざけんな!!!!!!というのが正直な心境です。こんなことあるんですね・・・。
せっかくですので、NX-Jikkyo のフィードバックフォームに感想なども書いていただけると助かります!
個人でリアルタイム WebSocket チャットサービス(しかも常時コメントがある)を安定運営のは本当に難しいと痛感しています。
特に収益が得られているわけではないのでインフラ構成をリッチにするのも難しいですし(頭のキャパ的に複雑にすると管理しきれないのもあります)、不甲斐ないところもあるかと思いますが、少なくとも私が実況民をやめるまでは続けていくつもりですので、今後ともよろしくお願いいたします。
コメント