Кэш в CDN, но не в браузере - PullRequest
14 голосов
/ 19 февраля 2012

В настоящее время я использую Akamai в качестве CDN, но заметил, что браузер также кэширует контент. Хорошо, что браузер кэширует изображения / css / js, но я хотел бы знать, есть ли способ кешировать не в браузере, а кешировать в Akamai.

Теперь, прямо сейчас, из моего источника, я отправляю заголовки вот так:

Cache-Control: public, must-revalidate, max-age=300
Expires: Sun, 19 Feb 2012 19:04:30 GMT
Date: Sun, 19 Feb 2012 18:59:30 GMT

Akamai чтит эти заголовки, но также передает их обратно пользователю. Это делает браузер кеширующим контент.

Это прекрасно работает большую часть времени, но у нас также есть некоторая логика CDN, которая, если у пользователя есть залогиненный cookie, позволяет обойти кэш CDN и перейти прямо к источнику.

Итак, если, скажем, не авторизованный пользователь нажимает кнопку «войти», он затем отправляется через процесс входа и возвращается на ту же страницу. Несмотря на то, что CDN будет запрашивать источник для этой страницы, браузер снова запрашивает ту же страницу и выглядит так, как будто вход в систему не работает.

Теперь я могу заставить процесс входа в систему добавить параметр запроса типа? L = 1 или что-то в этом роде, но должен быть лучший способ.

Я испытываю желание посмотреть, сможет ли Akamai перезаписать заголовок Cache-Control на жестко закодированное значение без кэширования, но мне интересно, есть ли способ сделать это в оригинале?

Спасибо!

Ответы [ 2 ]

20 голосов
/ 26 мая 2012

Akamai имеет заголовок «Edge-control» того же формата, что и Cache-Control.Вы можете указать Edge-control с положительным максимальным возрастом, а затем установить Cache-Control на «no-cache, no-store».Это должно получить то, что вы хотите.

При отправке заголовка Edge-control для страницы, которую я хочу кэшировать, мне всегда предшествует значение "! No-store", чтобы Akamai кэшировал его.Таким образом, формат будет, например, "! No-store, max-age = 1234".

1 голос
/ 23 марта 2012

Akamai предоставляет средства для установки различного поведения кэширования на серверах Akamai по сравнению с обычными заголовками Cache-Control: и Expires :.Существуют пользовательские заголовки, которые вы можете передавать с исходных серверов, которые пограничные серверы Akamai понимают, подчиняются и отбрасывают при передаче содержимого в браузер.Эта информация доступна в документации портала Akamai.

В вашем случае вы хотите, чтобы поведение изменялось в зависимости от того, вошел ли пользователь в систему или нет.Вы можете попросить, чтобы объект обошел кеш, когда объект доставляется в браузер для зарегистрированных пользователей, или вы можете использовать значения cookie для изменения ключа кеша (как на объект ссылается сервер Akamai), но вам может понадобитьсяпоговорить с Akamai о помощи здесь.

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

...