1. ホーム
  2. ruby-on-rails

[解決済み] Railsでブラウザのページキャッシュを防止する方法

2022-05-08 07:19:38

質問

Ubuntu -> Apache -> Phusion Passenger -> Rails 2.3

私のサイトのメイン部分は、あなたのクリックに反応するようになっています。つまり、リンクをクリックすると、その先に移動して、瞬時にページを再生成するのです。

しかし、戻るボタンを押すと、新しいページが表示されません。残念ながら、手動で更新しないと表示されないのです。ブラウザがキャッシュしているようです。ブラウザがページをキャッシュしていないことを確認したいのですが。

別途、私は する は、すべての静的アセットに遠い将来の有効期限を設定したいと思います。

これを解決する最善の方法は何でしょうか?Railsで解決すべきでしょうか?Apacheですか?それともJavascript?

いろいろとありがとうございました。 ジェイソン


残念。どちらの提案も、私が求めている動作を強制するものではありませんでした。

javascriptに答えがあるのでは?レールにタイムスタンプを書き込ませて、その時間が5秒以内かどうかをjavascriptにチェックさせるとか(何でもいい)。もしそうであれば、問題ありませんが、そうでなければ、ページを再読み込みしてください。

これでうまくいくと思いますか?

いつもお世話になっております。

ジェイソン

解決方法は?

やっとこさ、これがわかった -。 http://blog.serendeputy.com/posts/how-to-prevent-browsers-from-caching-a-page-in-rails/ application_controller.rb

Rails 5以降。

class ApplicationController < ActionController::Base

  before_action :set_cache_headers

  private

  def set_cache_headers
    response.headers["Cache-Control"] = "no-cache, no-store"
    response.headers["Pragma"] = "no-cache"
    response.headers["Expires"] = "Mon, 01 Jan 1990 00:00:00 GMT"
  end
end

Rails 4 およびそれ以前のバージョン。

class ApplicationController < ActionController::Base

  before_filter :set_cache_headers

  private

  def set_cache_headers
    response.headers["Cache-Control"] = "no-cache, no-store"
    response.headers["Pragma"] = "no-cache"
    response.headers["Expires"] = "Mon, 01 Jan 1990 00:00:00 GMT"
  end
end