我正在使用 Active Admin 的一个相当普通的实现。
用户使用 Active Admin 界面更新记录后,更改不会反映在浏览器中,直到用户执行硬刷新( ctrl+ F5)。
在开发或测试中未观察到此行为,但在生产中可以看到。我相信这是一个缓存问题。
有没有办法可以强制显示新更新的信息,这样用户就不必在每次记录更新后强制刷新?
我正在使用 Active Admin 的一个相当普通的实现。
用户使用 Active Admin 界面更新记录后,更改不会反映在浏览器中,直到用户执行硬刷新( ctrl+ F5)。
在开发或测试中未观察到此行为,但在生产中可以看到。我相信这是一个缓存问题。
有没有办法可以强制显示新更新的信息,这样用户就不必在每次记录更新后强制刷新?
该问题与浏览器或 rails 缓存无关,而是由于来自 Nginx 的服务器端缓存。
显然,硬刷新(ctrl+ F5)会告诉 Nginx 不使用缓存。Nginx 在硬刷新请求下,实际上会从 rails 请求页面内容,然后提供新内容,而不是缓存内容。
现在我已经禁用了 Nginx 缓存来证明这个理论通过添加到 Nginx 配置文件中解决了这个问题:
expires off;
然后我重新启动了 Nginx:
service nginx restart
现在一切正常。看起来像是黑魔法,Nginx 如何知道(服务器端)用户请求硬刷新。