gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:17:02 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com