2013-02-24 1 views
0

Есть ли способ использовать ASP.NET OutputCache для страницы для обоих:OutputCache для двух параметров, обычая и кодирования

  1. VaryByContentEncoding - будь то поддержка браузера Gzip или не
  2. По настраиваемого парам, в моем случае страна, которую я получаю от использования HttpContext.Current.Request.UserLanguages; и получить значение TwoLetterISORegionName из культуры, которое возвращается из моей функции.

Для некоторых стран я возвращаю ту же страницу, но с небольшими изменениями, но я все же хочу, чтобы они были кэшами отдельно, чтобы посетители из разных стран могли видеть разные социальные кнопки. Конечно, поддержка gzip или нет важна, потому что я передаю js и css теги с gzip, если браузер поддерживает сжатие gzip.

Обновление: Я думал об использовании varybycontrol и поставить статус страны + GZIP (о или 1) и в строку и записать их в скрытом поле и чем сказать .net для varybycontrol и передать идентификатор, который скрытый контроль поля. Однако я не уверен в этом подходе.

Спасибо.

ответ

1

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

public override string GetVaryByCustomString(HttpContext context, string arg) 
{ 
    // Do something with Request.Headers["Accept-Encoding"] (like checking if gzip is preferred...) 
    return "custom-encoding-key"; 
} 
+0

Язык и поддержка GZIP в функции PageLoad, есть ли возможность контролировать выходное кэширование оттуда? –

+0

Вам нужно будет переместить его внутри этой функции (он будет выполняться каждый запрос). Кроме того, при выполнении OutputCaching событие PageLoad не должно выполняться вообще. – Allov

 Смежные вопросы

  • Нет связанных вопросов^_^