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