Ресурсы перезагружаются между страницами с Turbolinks 5 и Rails 5 - PullRequest
0 голосов
/ 16 ноября 2018

В моей производственной среде я заметил, что Turbolinks не кэширует ресурсы между страницами.Когда я захожу на первую страницу своего приложения, загружается мой комплект JavaScript, как и мой CSS.Когда я попадаю на другую страницу со ссылкой, я вижу в chrome devtools, вкладке сеть, что они перезагружаются (HTTP-код 200).

application.html.erb

<html>
<head>
    <title>My title</title>
    <meta name="description" content="My description">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="robots" content="index, follow">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>

    <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <%= csrf_meta_tags %>
    <%= action_cable_meta_tag %>
</head>
<body class="<%= body_user_class %> <%= controller.controller_name %>">
  // Stuff
</body>
</html>

application.js

//= require turbolinks
//= require jquery
//= require jquery.slick
//= require jquery-ui/sortable
//= require rails-ujs
//= require_tree ./components

Отпечаток активов остается неизменным между первой и второй страницей, поэтому яне думаю, что проблема возникла оттуда.

Я могу понять, почему мой ресурс начальной загрузки перезагружается, поскольку на него ссылаются как на классический ресурс без использования rails.Но почему js и css моего приложения перезагружаются?

1 Ответ

0 голосов
/ 16 ноября 2018

В вашем приложении JavaScript есть следующее:

document.addEventListener("turbolinks:before-visit", function(e) {
  e.preventDefault(),
  window.location = e.data.url
})

Это отменяет поведение Turbolinks по умолчанию. Если вы удалите этот прослушиватель событий, он должен работать как положено.

...