Assets are reloaded between pages with Turbolinks 5 and Rails 5












0















In my production environment, I noticed Turbolinks was not caching assets between pages. When I come on the first page of my application, my javascript bundle gets loaded, so as my CSS. When I then get to another page with a link, I can see in the chrome devtools, network tab, that they are reloaded (HTTP code 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


The fingerprint of the assets remains the same between the first and the second page, so I don't think the issue comes from there.



I can understand why my bootstrap asset is reloaded, as it is referenced as a classical resource without using rails. But why are my application's js and css reloaded?










share|improve this question























  • Are you able to post a live demo of this behaviour?

    – Dom Christie
    Nov 16 '18 at 10:06











  • Yes, you can access to the production site here. Then just click on any of the two buttons to see it happen.

    – Rémi Doolaeghe
    Nov 16 '18 at 10:34


















0















In my production environment, I noticed Turbolinks was not caching assets between pages. When I come on the first page of my application, my javascript bundle gets loaded, so as my CSS. When I then get to another page with a link, I can see in the chrome devtools, network tab, that they are reloaded (HTTP code 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


The fingerprint of the assets remains the same between the first and the second page, so I don't think the issue comes from there.



I can understand why my bootstrap asset is reloaded, as it is referenced as a classical resource without using rails. But why are my application's js and css reloaded?










share|improve this question























  • Are you able to post a live demo of this behaviour?

    – Dom Christie
    Nov 16 '18 at 10:06











  • Yes, you can access to the production site here. Then just click on any of the two buttons to see it happen.

    – Rémi Doolaeghe
    Nov 16 '18 at 10:34
















0












0








0








In my production environment, I noticed Turbolinks was not caching assets between pages. When I come on the first page of my application, my javascript bundle gets loaded, so as my CSS. When I then get to another page with a link, I can see in the chrome devtools, network tab, that they are reloaded (HTTP code 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


The fingerprint of the assets remains the same between the first and the second page, so I don't think the issue comes from there.



I can understand why my bootstrap asset is reloaded, as it is referenced as a classical resource without using rails. But why are my application's js and css reloaded?










share|improve this question














In my production environment, I noticed Turbolinks was not caching assets between pages. When I come on the first page of my application, my javascript bundle gets loaded, so as my CSS. When I then get to another page with a link, I can see in the chrome devtools, network tab, that they are reloaded (HTTP code 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


The fingerprint of the assets remains the same between the first and the second page, so I don't think the issue comes from there.



I can understand why my bootstrap asset is reloaded, as it is referenced as a classical resource without using rails. But why are my application's js and css reloaded?







ruby-on-rails turbolinks






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 16 '18 at 9:51









Rémi DoolaegheRémi Doolaeghe

1,06921638




1,06921638













  • Are you able to post a live demo of this behaviour?

    – Dom Christie
    Nov 16 '18 at 10:06











  • Yes, you can access to the production site here. Then just click on any of the two buttons to see it happen.

    – Rémi Doolaeghe
    Nov 16 '18 at 10:34





















  • Are you able to post a live demo of this behaviour?

    – Dom Christie
    Nov 16 '18 at 10:06











  • Yes, you can access to the production site here. Then just click on any of the two buttons to see it happen.

    – Rémi Doolaeghe
    Nov 16 '18 at 10:34



















Are you able to post a live demo of this behaviour?

– Dom Christie
Nov 16 '18 at 10:06





Are you able to post a live demo of this behaviour?

– Dom Christie
Nov 16 '18 at 10:06













Yes, you can access to the production site here. Then just click on any of the two buttons to see it happen.

– Rémi Doolaeghe
Nov 16 '18 at 10:34







Yes, you can access to the production site here. Then just click on any of the two buttons to see it happen.

– Rémi Doolaeghe
Nov 16 '18 at 10:34














1 Answer
1






active

oldest

votes


















0














In your application JavaScript bundle, you have the following:



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


This cancels the default Turbolinks behaviour. If you remove this event listener, it should work as expected.






share|improve this answer
























  • That sounds promising. I just didn't knew this code snippet existed. I'll try remove it for the next deployment in production and see what happen. Thanks!

    – Rémi Doolaeghe
    Nov 16 '18 at 11:13












Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53335275%2fassets-are-reloaded-between-pages-with-turbolinks-5-and-rails-5%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














In your application JavaScript bundle, you have the following:



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


This cancels the default Turbolinks behaviour. If you remove this event listener, it should work as expected.






share|improve this answer
























  • That sounds promising. I just didn't knew this code snippet existed. I'll try remove it for the next deployment in production and see what happen. Thanks!

    – Rémi Doolaeghe
    Nov 16 '18 at 11:13
















0














In your application JavaScript bundle, you have the following:



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


This cancels the default Turbolinks behaviour. If you remove this event listener, it should work as expected.






share|improve this answer
























  • That sounds promising. I just didn't knew this code snippet existed. I'll try remove it for the next deployment in production and see what happen. Thanks!

    – Rémi Doolaeghe
    Nov 16 '18 at 11:13














0












0








0







In your application JavaScript bundle, you have the following:



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


This cancels the default Turbolinks behaviour. If you remove this event listener, it should work as expected.






share|improve this answer













In your application JavaScript bundle, you have the following:



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


This cancels the default Turbolinks behaviour. If you remove this event listener, it should work as expected.







share|improve this answer












share|improve this answer



share|improve this answer










answered Nov 16 '18 at 10:58









Dom ChristieDom Christie

2,66821517




2,66821517













  • That sounds promising. I just didn't knew this code snippet existed. I'll try remove it for the next deployment in production and see what happen. Thanks!

    – Rémi Doolaeghe
    Nov 16 '18 at 11:13



















  • That sounds promising. I just didn't knew this code snippet existed. I'll try remove it for the next deployment in production and see what happen. Thanks!

    – Rémi Doolaeghe
    Nov 16 '18 at 11:13

















That sounds promising. I just didn't knew this code snippet existed. I'll try remove it for the next deployment in production and see what happen. Thanks!

– Rémi Doolaeghe
Nov 16 '18 at 11:13





That sounds promising. I just didn't knew this code snippet existed. I'll try remove it for the next deployment in production and see what happen. Thanks!

– Rémi Doolaeghe
Nov 16 '18 at 11:13




















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53335275%2fassets-are-reloaded-between-pages-with-turbolinks-5-and-rails-5%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Xamarin.iOS Cant Deploy on Iphone

Glorious Revolution

Dulmage-Mendelsohn matrix decomposition in Python