我有四个问题。
第一种情况:
在某些情况下,我会向页面添加通知和警报,显然应从缓存中删除这些通知和警报。为此,我添加了所需的JavaScript行:
function componentsNotificationsFlashModalHide() {
setTimeout(function() {
if ( $('.flash-modal.flash:not(.invisible):hover').length != 0 ) {
componentsNotificationsFlashModalHide();
} else {
$('.flash-modal.flash:not(.invisible)').fadeOut(250);
Turbolinks.clearCache();
};
}, 4500);
};
基本上,当通知淡出时,缓存应该被清除,因此下一次访问将从服务器获取新版本的页面。 相反,缓存版本会在返回页面时保持通知的状态,直到我手动完全重新加载页面。
第二种情况:
在我的应用中,根模板在两个独立的模板和控制器上以两种状态存在,具体取决于用户是否已登录。我试图通过附加......来防止任何问题。
%meta{ name: 'turbolinks-cache-control', content: 'no-cache' }
......对于两个文件的主管。 但是,只要用户登录并访问根文档,就会显示错误的版本,反之亦然。
第三种情况:
在某些情况下,在登录后(并重定向到上一个或根网址),服务器会从用户登录的页面发出额外的重定向。
例如,用户流可能如下所示:
root_url -> login_url => root_url =!> some_other_url
-> manual
=> redirect
=!> redirect which is not working
这显然与turinkinks有关。手动发出重定向后,服务器会立即将用户重定向到some_other_url
。
第四种情况:
点击包含remote: true
和method: :put
的链接时,似乎turbolink会自动响应而不提供该特定格式的模板:
Turbolinks.clearCache()
Turbolinks.visit("http://lvh.me:3000/", {"action":"replace"})
但是,不是重新加载页面并针对任何新的更改进行调整,而是取出缓存版本,在这种情况下无法实现。
Rails版本:5.1.0.rc2