Rails Turbolinks 5 вызывает мерцание пользовательского интерфейса?
Мое приложение rails мерцает во время перехода. Кажется, виновником является Turbolinks. Кто-нибудь знает, как остановить мерцание или почему оно вообще мигает?
Если вы перейдете по ссылке ниже и нажмете любую из кнопок входа, вы скопируете то, что я испытываю.
Странно то, что нет проблем при доступе к нему из Firefox или Safari. Это происходит только в последней версии Chrome и Internet Explorer? Так что я не уверен, что это проблема браузера.
2 ответа
Мерцание происходит при загрузке кэша непосредственно перед тем, как turbolinks перезаписывает его новым содержимым. Я смог исправить это, поместив (в <head>
макета) следующий код:
<meta name="turbolinks-cache-control" content="no-cache">
Приведенный выше код отключает функцию кэширования turbolinks. Нет кэширования == Нет мерцания пользовательского интерфейса. Однако использование кнопок "Назад" или "Вперед" в браузере теперь будет выполнять сетевой вызов (по-прежнему через Turbolinks).
См. Пример кода по адресу: https://github.com/DockerOnRails/todomvc-turbolinks
Существует также еще один вариант очистки кеша перед использованием Turbolink.visit
(что вызывает мерцание пользовательского интерфейса): вызывая 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>
В конце концов, я решил полностью убрать турбо.