[rails]iPhone(iOS) Safariでページをリロードすると時々真っ白な画面が表示される問題


[まとめ] 現在開催中のKindleセール情報はこちら

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で復活してしまったバグのようですね。

[まとめ] 現在開催中のKindleセール情報はこちら