2012-02-19 3 views
13

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

Сейчас, прямо сейчас из моего происхождения я посылаю заголовки, как это:

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 на значение жесткого кодированного значения без кэша, но мне интересно, есть ли способ сделать это по происхождению?

Спасибо!

+1

Почему вы хотите, чтобы браузер не кэшировал контент? –

+2

Поскольку он хочет, чтобы браузер повторно загружал страницу, когда пользователь вошел в систему. Вероятно, чтобы пользователь увидел персонализированную страницу, а не тот же html, что и все остальные. –

ответ

1

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

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

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

19

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

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

+0

Релевантный вариант использования - https://community.akamai.com/thread/2704 –