有一个Rails网络应用程序.每次我打开一个浏览器时,我都可以看到带有过时数据(旧的数字、文本等)的页面(Chrome,Firefox,Edge)。我必须刷新页面以查看实际数据。
在浏览器打开时有什么方法可以刷新页面吗?也许有铁轨设置..。或者有一种使用JS做某事的方法。
因此,基本场景如下所示:
)
预期结果:页面包含相关(“新鲜”)数据。实际结果:页面包含过时的数据。
有人能帮我吗?
发布于 2021-04-27 01:07:44
我找到了一个答案,here。
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年的历史了,但仍然可行。
发布于 2022-02-17 23:39:23
在config/initializers/default_headers.rb (或类似的)中,放置以下内容:
Rails.application.config.action_dispatch.default_headers['Cache-Control'] = 'no-cache, no-store'发布于 2021-04-23 04:17:44
还没有遇到这个问题,但我可能会使用一些JS以某种方式来处理它。
这可能非常简单,只需将page_generated_at时间存储在页面的某个位置(例如unix时间戳,可能是为了避免对日期时间格式处理的需要)(当页面从服务器呈现时),然后添加JS来重新加载页面,如果page_generated_at时间比当前时间早了X秒,这将是JS的几行。
https://stackoverflow.com/questions/66144328
复制相似问题