Как отключить кеширование прокси с помощью .htaccess - PullRequest
5 голосов
/ 11 августа 2010

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

ExpiresDefault A0
Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0"
Header set Pragma "no-cache"

Как я понял (по Googling), заголовок Expires читается только прокси, поэтому я мог бы также просто использовать "Header set Expires 0"?

Полагаю, это также предотвратит кэширование таблиц стилей, изображений и других ресурсов (хотя только прокси, а не браузерами)?

Как лучше всего с этим справиться? Я использую PHP и могу легко изменять заголовки через PHP, если это рекомендуется.

У меня нет доступа к прокси-серверу для тестирования.

Ответы [ 2 ]

3 голосов
/ 03 сентября 2014

Из http 1.1 spec ( RFC 2616 ) глава 14.9.1

private
    Indicates that all or part of the response message is intended for
    a single user and MUST NOT be cached by a shared cache. This
    allows an origin server to state that the specified parts of the

Установка заголовка Cache-Control "private, ..." делает свое дело.

Нет необходимости в заголовке Expires.Cache-Control: максимальный возраст переопределяет поле Expires.См. Раздел RFC: 14.21

Вы должны отправлять различные заголовки кэширования в зависимости от содержимого, которое вы доставляете.

Следующий пример предназначен для веб-сайта, предоставляющего статическое содержимое в / static и различного содержимого для зарегистрированных пользователей.,Зарегистрированные пользователи идентифицируются по наличию файла cookie сеанса: MYSESSID.

  • Разрешить 5-минутное публичное кэширование по умолчанию
  • Разрешить 365-дневное публичное кэширование для статических файлов
  • Разрешить5-минутное частное кеширование для зарегистрированных пользователей
  • Запретить кеширование в / dynamic / *

RewriteEngine On
# Flag files in /static as STATIC
RewriteRule ^static - [E=STATIC:1]

# Flag requests by logged in users as PRIVATE
# Users are identified by presence of MYSESSID cookie
# Ignores files in: /static 
RewriteCond %{HTTP_COOKIE} MYSESSID
RewriteCond %{REQUEST_URI} !^/static
RewriteRule ^ - [E=PRIVATE:1]

# Tell proxy servers that contents not in /static vary based on the given cookies
RewriteCond %{REQUEST_URI} !^/static
RewriteRule ^ - [E=VARY:1]

# Flag requests to /dynamic as NO_CACHE
RewriteRule ^dynamic - [E=NO_CACHE:1]


## Default Cache-Control
# Per default, any content is public and 5min cacheable
Header set Cache-Control "public, max-age=300"

## Static Files
# Static files are public and 365d cacheable.
Header set Cache-Control "public, max-age=31536000" env=STATIC
# Reset age, indicates objects as fresh
Header set Age 0 env=STATIC

## Private responses
# private. Allow 5min caching
Header set Cache-Control "private, max-age=300" env=PRIVATE

## Deny caching
Header set Cache-Control "private, max-age=0, no-cache, no-store, must-revalidate" env=NO_CACHE

## Vary rules
Header append Vary: Cookie env=VARY
0 голосов
/ 28 августа 2014

Использование:

ExpiresActive Вкл.

ExpiresDefault now

Набор заголовков Cache-Control "без кэширования, без сохранения, повторная проверка должна выполняться, максage = 0, повторная проверка прокси, без преобразования "

Набор заголовков Pragma" no-cache "

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