Браузеры, кажется, игнорируют мой контроль кэша заголовков ответов Python

В настоящее время я разрабатываю приложение на google-app-engine с использованием webapp2 Python. Я работаю на Mac, Lion и тестирую в Firefox 26, Safari 6.02 и Google Chrome.

У меня есть домашняя страница с кнопкой входа в систему. Вы нажимаете кнопку "Войти в AJAX" на сервер, и в случае успеха я использую window.location.replace, чтобы перезагрузить домашнюю страницу без кнопки входа и предоставить доступ к страницам пользователя. При выходе из системы я выполняю AJAX вызов обработчика на сервере, сбрасываю сеанс и в случае успеха использую другой файл window.location.replace, чтобы перезагрузить домашнюю страницу кнопкой входа в систему.

Однако, если я вернусь назад или вперед, в зависимости от того, будут ли отображаться страницы активности пользователя. Эти страницы не загружаются через AJAX, все они загружаются либо как перенаправления с сервера, либо как window.location.href от клиента.

У меня проблемы на локальном хосте с Firefox bfcache. Теперь я установил заголовки Python в моем методе отправки на:

    self.response.headers["Pragma"]="no-cache"
    self.response.headers["Cache-Control"]="no-cache, no-store, must-revalidate, pre-check=0, post-check=0"
    self.response.headers["Expires"]="Thu, 01 Dec 1994 16:00:00"
    self.response.headers['Cache-Control'] = 'public, max-age=0'

И когда я проверяю сетевую консоль в Firebug, срок ее действия иногда составляет 1970 год.

Тем не менее, bfcache, кажется, замораживает страницу в соответствии со своими спецификациями и не учитывает истечение срока действия и перезагружает страницу при нажатии кнопок "назад".

Это потому, что я нахожусь на локальном хосте или использую http для тестирования? Я действительно смущен всей этой вещью bfcache. Я понимаю, что могу использовать событие onpageshow в браузере, чтобы что-то делать с этой клиентской стороной, но я бы предпочел отсортировать эту серверную сторону, если это возможно.

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

0 ответов

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