如何让turbolinks始终从服务器获取页面

时间:2013-04-08 13:57:27

标签: turbolinks

如果我有一个永远不应该被缓存的页面并且应该始终从服务器中检索,那么当用户按下后退按钮时,我怎样才能获得turbolinks?它只是服从http响应的缓存控制指令吗?

4 个答案:

答案 0 :(得分:4)

您可以执行以下操作,让turbolink总是从服务器获取所有页面的页面(至少在我的情况下是所需的行为,因此单击后退按钮也会更新页面):

// js
Turbolinks.pagesCached(0);

或者,根据doc为一个站点禁用它,只需向任何元素添加data-no-transition-cache属性,例如在您不想缓存的站点上将其添加到体:

<body data-no-transition-cache>...</body>

答案 1 :(得分:4)

Turbolinks 5中的内容已更改,现在您需要在<head>级别设置此页面,以便页面不被缓存:

<head>
  ...
  <meta name="turbolinks-cache-control" content="no-cache">
  ...
</head>

参考:https://github.com/turbolinks/turbolinks#opting-out-of-caching

答案 2 :(得分:0)

在用户访问turbolink页面后,您无法禁用turbolinks效果,即使您禁用了turbolinks,当用户按下后退按钮时,也可能会显示浏览器缓存页面。

后期部分无法逃避,但格式化程序部分可以通过将data-no-turbolink设置为导致始终需要像这样检索页面的链接强制进行正常链接来轻松逃脱

<div>
  <a href="retrieve_always.html" data-no-turbolink>Special Page</a>
  <a href="normal_page.html">NormalPage</a>
</div>

此外,您可以更全面地设置data-no-turbolink

<div data-no-turbolink>
  <a href="retrive_page1.html">Retrive page 1</a>
  <a href="retrive_page2.html">Retrive page 2</a>
</div>

在这些情况下,所有检索所需页面都是由浏览器缓存而不是通过turbolinks缓存,因此,后退按钮被按下处理委托给浏览器。

答案 3 :(得分:0)

简短回答是否定的,按下后退按钮时,您无法禁用显示页面的缓存副本。这种行为会与浏览器的默认行为不同,Turbolinks尽可能地尝试模仿它们。

如果您访问任何网站,请单击几个链接,然后按后退按钮,您会注意到浏览器显示缓存副本。据我所知,在浏览器级别无法禁用。