我的Rails应用在转换过程中出现闪烁。似乎Turbolinks是罪魁祸首。有人知道如何停止闪烁或为什么会闪烁吗?
如果您访问下面的链接并单击任何一个登录按钮,您将复制我的体验。
奇怪的是,在Firefox或Safari中访问时没有问题。这只发生在最新版本的Chrome和Internet Explorer上。因此,我不确定它是否是浏览器问题。
我的Rails应用在转换过程中出现闪烁。似乎Turbolinks是罪魁祸首。有人知道如何停止闪烁或为什么会闪烁吗?
如果您访问下面的链接并单击任何一个登录按钮,您将复制我的体验。
奇怪的是,在Firefox或Safari中访问时没有问题。这只发生在最新版本的Chrome和Internet Explorer上。因此,我不确定它是否是浏览器问题。
在turbolinks覆盖新内容之前加载缓存时,会发生闪烁现象。我通过在布局的 <head>
中添加以下代码来解决这个问题:
<meta name="turbolinks-cache-control" content="no-cache">
上述代码禁用了turbolinks缓存功能。无缓存 == 无UI闪烁。但是,在浏览器中使用后退或前进按钮现在将执行网络调用(仍通过Turbolinks)
请参见示例代码:https://github.com/DockerOnRails/todomvc-turbolinks
另外,还有另一个选项可以在使用Turbolink.visit
之前清除缓存(从而导致UI闪烁):通过调用Turbolinks.clearCache()
,这将与禁用缓存相同,但让您能够在其他地方继续使用缓存。
对我来说(使用Rails 7.0.4),罪魁祸首是devise的一个闪现消息。通过添加data-turbo-cache="false"
,我能够防止它闪烁。例如:
<div data-turbo-cache="false">
<% if notice %>
<p class="alert alert-success"><%= notice %></p>
<% end %>
<% if alert %>
<p class="alert alert-danger"><%= alert %></p>
<% end %>
</div>
我最终决定完全删除 turbo。