2011-12-21 2 views
2

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

Это особенно проблема, если бы был HTTP кеш между PHP и клиентом. Если я устанавливаю ограничитель кеша всегда «общедоступным», страница, предположительно, всегда будет кэшироваться (даже прокси-кешем.) Если я установил ограничитель кеша как «общедоступный», когда не войдет в систему, а «частный» при регистрации в, проблема, которую я сейчас имею, вероятно, все еще будет иметь место. Если я установил, что ограничитель кэша всегда будет закрытым, прокси-кеш вообще не принесет пользы, и проблема, которую я сейчас имею, вероятно, все еще произойдет.

Какое идеальное решение этой проблемы? Есть ли способ заставить веб-браузер «повторить попытку» после входа пользователя в систему? Для прокси-кеша я знаю, что есть способы кэширования на основе входящих файлов cookie, поэтому я считаю, что это может решить часть проблемы. Но как насчет проблемы с точки зрения веб-браузера?

+1

Было бы обязательным-revalidate' или 'proxy-revalidate' быть ключевое ключевое слово здесь? –

+0

О, я забыл о 'must-revalidate' ... возможно, вы правы. Я действительно верю, что это приводит к тому, что nginx (как кеширующий прокси) не кэширует. Что мне с этим делать? Я хотел бы использовать nginx здесь. –

+0

Собственно, я ошибся. Я прочитал эту тему (потому что я никогда не помню их наизусть), и это означает только, что кешированная копия должна быть проверена после того, как копия станет устаревшей. –

ответ

1

Существует не большое решения здесь, но у вас есть пара вариантов:

  1. сделать страницы действительно идентичны ли зарегистрирован ваш пользователь или нет, используя AJAX, чтобы запросить вошедшую в состоянии с помощью услуга JSON .
  2. Не кешируйте страницы, просто кешируйте скрипты, стили и изображения. Браузерное кэширование HTML полезно только в том случае, если ваши пользователи постоянно смотрят на на тех же страницах и не ожидают разных результатов. Это ваш прецедент? Если это так, вы, вероятно, уже используете AJAX для предоставления обновлений в режиме реального времени, и это, вероятно, не огромный скачок для реализации опции вариант №1.
Смежные вопросы