Кэширование страницы заголовка - PullRequest
0 голосов
/ 30 октября 2009

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

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

Буду признателен за любой совет.

  if ($currentMember->isLoggedIn()) {
   $this->cachePermission = 'private';
  } else {
   $this->cachePermission = 'public';
  }
  $this->tru->header->set('Pragma', array(
   $this->cachePermission
  ));
  $this->tru->header->set('Cache-Control', array(
   $this->cachePermission,
   'no-cache',
   'max-age=300',
   's-maxage=300',
   'must-revalidate'
  ));

Обновление

В основном я пытаюсь заставить кнопку «Назад» работать в браузере зрителя. Я не хочу никакого другого кеширования, кроме этого.

Ответы [ 2 ]

2 голосов
/ 30 октября 2009

Я бы порекомендовал вообще не разрешать кэширование страницы, если она будет меняться в зависимости от того, вошел ли пользователь в систему.

Cache-Control: no-store, must-revalidate
Expires: 0

Если это слишком экстремально, я бы по крайней мере предложил всегда использовать Cache-Control: private и никогда не разрешать хранить его в кеше прокси. По моему опыту, разрешение прокси-сервера кешировать это будет просто причиной проблем, когда разные пользователи видят разные вещи.

Обновлен:

По моему опыту, найти такую ​​золотую середину может быть сложно, если вы хотите, чтобы она работала одинаково во всех основных браузерах. Вы можете попробовать начать с Cache-Control: private, must-revalidate и перейти оттуда.

Еще одна вещь, которая может помочь, - это использование заголовка ETag в зависимости от состояния страницы и того, какой пользователь вошел в систему. После добавления заголовка pecl_http предоставляет некоторые полезные такие функции, как http_cache_etag() для отправки ответа 304 / неизмененного в браузер, чтобы он мог вместо этого загрузить из кэша.

0 голосов
/ 30 октября 2009

Я видел, как FireFox стал очень агрессивным с кешированием. Вы можете сказать, что это происходит, когда вы вводите искусственную строку запроса в свой URI и получаете свежие результаты.

?asdf=1

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...