При использовании OutputCache с MVC sub.domain.com дает мне www.domain.com кэшированную страницу - PullRequest
2 голосов
/ 10 марта 2012

У меня есть одно приложение ASP.NET MVC, которое использует области для предоставления различных функций в зависимости от того, какой URL-адрес был достигнут. Например

  • www.domain.com - область сайта
  • app.domain.com - Область применения
  • *. Domain.com - Клиентская зона

Итак, суть в том, что в зависимости от входящего URL мы направляем вас в другую область MVC. Все это делается с использованием Routing с некоторыми расширениями и прекрасно работает.

Теперь, если я включу кэш вывода в действии Index () для моего маршрута по умолчанию www, в следующий раз, когда я нажму app.domain.com, я получу кэшированную версию домена www. Я проверил, используя fiddler, и ответ - 200 OK, поэтому он определенно попадает на сервер. Тем не менее, регистрация в моей пользовательской маршрутизации говорит мне, что этот код не работает.

Итак, OutputCache не работает на основе URI и вместо этого использует какой-то другой алгоритм?

Спасибо

Ответы [ 2 ]

2 голосов
/ 23 марта 2013

[OutputCache (VaryByHeader = "Host")] должен помочь.

0 голосов
/ 10 марта 2012

Поведение будет зависеть от того, где вы решили хранить кеш ( Местоположение свойство). Если вы сохранили кеш на сервере (OutputCacheLocation.Server), то результат выполнения действия будет сохранен на сервере, и когда последующий запрос к этому действию будет запущен, сервер будет напрямую возвращать кэшированная версия без выполнения действия контроллера, которое является поведением, которое вы описываете.

Если вы храните кеш на клиенте (OutputCacheLocation.Client), то кеш будет храниться в клиентском браузере. В этом случае, если последующий запрос будет выполнен к тому же действию, клиент больше не будет попадать на сервер, а будет непосредственно обслуживать страницу из своего кэша. И помните, что если вы нажмете F5 в своем браузере, у вас истечет срок действия кэша для данной страницы, и сервер будет загружен.

...