7

如果我有一个永远不应该被缓存并且应该始终从服务器检索的页面,当用户按下后退按钮时,我怎样才能让 turbolinks 做到这一点?它会服从来自 http 响应的缓存控制指令吗?

4

4 回答 4

7

这在Turbolinks 5中发生了变化,现在您需要将其设置<head>为不缓存页面的级别:

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

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

于 2016-07-01T03:05:27.780 回答
4

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

// js
Turbolinks.pagesCached(0);

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

<body data-no-transition-cache>...</body>
于 2014-02-07T22:33:22.210 回答
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 缓存,因此,后退按钮按下处理委托给浏览器。

于 2013-04-10T05:33:02.200 回答
0

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

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

于 2014-10-17T19:50:13.593 回答