ruby-on-rails - 如何防止 Rails 中的浏览器页面缓存

标签 ruby-on-rails ruby apache caching http-headers

Ubuntu → Apache → Phusion Passenger → Rails 2.3。

我网站的主要部分会对您的点击使用react。因此,如果您单击一个链接,它会将您带到目的地,并立即重新生成您的页面。

但是,如果您点击后退按钮,您将看不到新页面。不幸的是,如果没有手动刷新,它不会出现;看来浏览器正在缓存它。我想确保浏览器不会缓存该页面。

另外,我确实想为我所有的静态 Assets 设置遥远的到期日。

解决这个问题的最佳方法是什么?我应该在 Ruby on Rails 中解决这个问题吗? Apache ? JavaScript?


唉。这些建议都没有强制执行我正在寻找的行为。

也许有一个 JavaScript 答案?我可以让 Ruby on Rails 在评论中写出时间戳,然后让 JavaScript 代码检查时间是否在五秒内(或任何有效的时间)。如果是,那么很好,如果不是,则重新加载页面?

你认为这行得通吗?

最佳答案

我终于想通了 - http://blog.serendeputy.com/posts/how-to-prevent-browsers-from-caching-a-page-in-rails/application_controller.rb 中。

Ruby on 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

Ruby on 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

关于ruby-on-rails - 如何防止 Rails 中的浏览器页面缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/711418/

相关文章:

ruby-on-rails - 未知验证器 : 'LenghtValidator' (ArgumentError) when I run RSpec

ruby-on-rails - Rails 4 ActionMailer around_action |访问操作信息(操作名称和参数)

ruby-on-rails - Rails - 如何在某些事件上给用户通知消息

apache - 使用 Pubby/Apache Tomcat 显示主页

java - Android StringBody(String) 已弃用

ruby-on-rails - rails:为#<StateMachine::Machine:0xba3014ec> 调用了 protected 方法 `around_validation'

mysql - SQL LIKE 仅在表的一行上搜索错误

ruby-on-rails - 与 heroku 一起工作的统计引擎

基于 TCL 的 Expect 的 Ruby 版本?

linux - 为本地主机配置 Apache