Rails: 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' }

... в голову обоих документов. Тем не менее, всякий раз, когда пользователь входит в систему и посещает корневой документ, отображается неправильная версия, и наоборот.


Третий случай:

В некоторых случаях после входа (и перенаправления на предыдущий или корневой URL-адрес) сервер выполняет дополнительное перенаправление со страницы, на которую попадает пользователь.

Так, например, пользовательский поток может выглядеть так:

root_url -> login_url => root_url =!> some_other_url

-> manual
=> redirect
=!> redirect which is not working

Это явно связано с турболинками. После ручного перенаправления сервер немедленно перенаправляет пользователя на some_other_url,


Четвертый случай:

При нажатии на ссылку с remote: true а также method: :putПохоже, что turbolinks отвечает автоматически, не предоставляя шаблон для этого конкретного формата:

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

Но вместо того, чтобы перезагрузить страницу и настроить ее для каких-либо новых изменений, она выбирает кэшированную версию, которая в этом случае не может быть предназначена.


Версия Rails: 5.1.0.rc2

0 ответов

Другие вопросы по тегам