使用TurboLinks时何时重新检索CSS和JS资产?

时间:2014-08-02 10:30:32

标签: ruby-on-rails turbolinks

TurboLinks不是让浏览器在每次页面更改之间重新编译JavaScript和CSS,而是让当前页面实例保持活动状态,只替换头部的正文和标题。

那么,何时重新加载并重新编译JavaScript和CSS?

如果我让用户连续数小时使用我的Rails应用程序,那么资产是否会被重新加载?如果我需要它们是什么...即我需要部署修复程序等?

我知道track certain assets使用data-turbolinks-track属性是可能的,但是我试图从整体角度理解,而不依赖于此。

2 个答案:

答案 0 :(得分:2)

每个人都被贬低了一段时间 - 为了确保它没有发生,在你问这里之前,你真的需要看看文档&尝试尽可能具体地了解问题。


Turbolinks

我的理解是Turbolinks会评估您需要在<head>标记中加载哪些文件的网页。如果它发现<head>标记相同,则只会部分重新加载您的网页;而如果您完全请求不同的<head>文件,Turbolinks将只刷新页面。

如果您采用Rails的典型用例(包含application.cssapplication.js),如果您在此网站上加载了100页,那么您最终必须提供100次这些文件。

Turbolinks使用Ajax来提取<body>&amp;您要加载的网页的<title>代码,<head>完整 意图保持不变。这与Rails本身无关 - 它只是一个JS附加组件,旨在加快页面的提供


资产编辑

当您运行Rails应用程序时,有两种选择来为资产提供服务 - 动态静态

资产的静态投放是production环境的典型情况,您的网页上会加载标准.css.js个文件。

如果用户点击要求重新加载的页面,Turbolink会重新加载这些文件。与Sampriti Panda的建议相比,Turbolinks监控后端文件是不正确的 - 只是在那里管理用户对网站的使用

这意味着无论您是否使用资产fingerprinting(这是您从静态资产precompilation获得的),Turbolinks仍将以相同的方式工作(如上所述)< / p>


<强> JS

底线是Turbolinks是javascript

它与&#34;后端&#34;无关。 Rails的工作原理 - 所以你的文件是静态的还是动态的并不重要。它仅取决于用户浏览您的应用程序的方式

它只需要您页面上的任何链接,评估您要加载的下一页,并确定它是应该重新加载整个页面,还是仅仅<body>&amp; <title>代码

答案 1 :(得分:1)

当Rails在生产中编译资产时,它会在每个文件名中插入MD5指纹,以便Web浏览器缓存该文件。更改此文件并重新部署时,指纹会更改,因为文件内容会更改。

因此下一次Turbolinks获取一个页面时,它将会看到一个新的资产文件,并将用更新的版本重新加载资产文件来替换当前的文件。