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>

В конце концов, я решил полностью убрать турбо.

Другие вопросы по тегам