[rails]iPhone(iOS) Safariでページをリロードすると時々真っ白な画面が表示される問題
Railsでスマホ向けのサイトを作っていた時に、iPhoneのSafariでページをリロードすると時々真っ白な画面が表示される現象が発生しました。
一度真っ白画面が出てしまうとキャッシュをクリアしないと元に戻らないという困った症状です。
原因を調べていたところ、同じ現象に遭遇された方の記事を発見。
iOS の Safari で Rails のページをリロードすると真っ白画面になる件 - 知のレバレッジを最大化せよ
どうやらSafariのキャッシュ周りのバグのようです。
上記記事でも推奨しない一時対応と書かれていましたが、応急処置としてiOSの場合はLast-Modifiedヘッダーを常に更新することで、真っ白画面問題が発生することはなくなりました。
# app/controllers/application_controller.rb
before_action :update_header
def update_header
if request.user_agent.match(/iP(hone|ad|od)/)
headers['Last-Modified'] = Time.now.httpdate
end
end
WebKitバグレポートを見ると、以前解決済みになったもののiOS7で復活してしまったバグのようですね。