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

rails4でアプリ作成後にDBを使わないようにしたい

あまりないケースではありますがメモ。

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

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

[s3][ruby]静的ウェブサイトホスティングしたサイトのTwitter Cardsが表示されない場合の対応

先日、S3の静的ウェブサイトホスティングを使ってサイト公開を行った際に、ページ表示やFacebookのOGP表示は問題なくできるのにTwitter Cardsだけ表示されない、という現象が発生しました。