hello-world
webエンジニアのメモ。とりあえずやってみる。

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


Related #Rails

[rails]ELB使用時にヘルスチェック用のアクションを作成する

ELBにrailsアプリをぶら下げる場合、railsアプリが落ちたらELBから外れてもらいたいです。

[rails]carrierwaveで保存した画像のurlを取得する

carrierwave 0.10.0 で確認 imageカラムにcarrierwaveで保存した画像を保存している場合、デフォルトのままだとだとurlメソッドを実行してもpublic以下のパスのみで http://~ が設定されていません。