首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 6.浏览器打开后显示数据过时的页面。

Rails 6.浏览器打开后显示数据过时的页面。
EN

Stack Overflow用户
提问于 2021-02-10 20:12:59
回答 3查看 358关注 0票数 2

有一个Rails网络应用程序.每次我打开一个浏览器时,我都可以看到带有过时数据(旧的数字、文本等)的页面(Chrome,Firefox,Edge)。我必须刷新页面以查看实际数据。

在浏览器打开时有什么方法可以刷新页面吗?也许有铁轨设置..。或者有一种使用JS做某事的方法。

因此,基本场景如下所示:

  • 打开带有某些数据的页面
  • 关闭浏览器(不要用页面关闭选项卡)
  • 更改此页的数据(例如在DB中)打开浏览器并查看页面的状态(

)

预期结果:页面包含相关(“新鲜”)数据。实际结果:页面包含过时的数据。

有人能帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-27 01:07:44

我找到了一个答案,here

代码语言:javascript
复制
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

这个解决方案已经有12年的历史了,但仍然可行。

票数 1
EN

Stack Overflow用户

发布于 2022-02-17 23:39:23

config/initializers/default_headers.rb (或类似的)中,放置以下内容:

代码语言:javascript
复制
Rails.application.config.action_dispatch.default_headers['Cache-Control'] = 'no-cache, no-store'
票数 1
EN

Stack Overflow用户

发布于 2021-04-23 04:17:44

还没有遇到这个问题,但我可能会使用一些JS以某种方式来处理它。

这可能非常简单,只需将page_generated_at时间存储在页面的某个位置(例如unix时间戳,可能是为了避免对日期时间格式处理的需要)(当页面从服务器呈现时),然后添加JS来重新加载页面,如果page_generated_at时间比当前时间早了X秒,这将是JS的几行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66144328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档