Rails:Turbolinks没有清除缓存

时间:2017-06-30 19:31:27

标签: javascript ruby-on-rails caching ruby-on-rails-5 turbolinks

我有四个问题。

第一种情况:

在某些情况下,我会向页面添加通知和警报,显然应从缓存中删除这些通知和警报。为此,我添加了所需的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: truemethod: :put的链接时,似乎turbolink会自动响应而不提供该特定格式的模板:

Turbolinks.clearCache()
Turbolinks.visit("http://lvh.me:3000/", {"action":"replace"})

但是,不是重新加载页面并针对任何新的更改进行调整,而是取出缓存版本,在这种情况下无法实现。

Rails版本:5.1.0.rc2

0 个答案:

没有答案