Я борюсь с настройками IIS в отношении кэширования, вот краткое описание моей проблемы:
Я делаю сайт для мобильных и немобильных устройств, используя одни и те же контроллеры. IE: mysite / page будет обслуживать либо mysite / page.cshtml, либо mysite / M / page.cshtml, в зависимости от устройства.
Вот подвох, он отлично работал с моей локальной средой и средой интеграции (cassiini и iis 6), но на другой машине (2008r2 / iis 7.5), очевидно, существует агрессивная серверная политика кэширования :
- Если я захожу на сайт с настольного компьютера, у меня есть правильные страницы (настольная версия)
- Если теперь я использую свой мобильный телефон для доступа к сайту, у меня будет настольная версия (что подразумевает кэш на стороне сервера, мой телефон не использует ту же сеть).
Напротив, если бы я сначала перезапустил сервер и получил доступ к сайту с помощью моего телефона, то я получил бы мобильную версию на своем рабочем столе (конечно, только для страниц, которые я уже посетил).
До сих пор я пробовал 2 решения:
Отключение OutputCache из моего Web.config:
<httpModules>
[..]
<remove name="OutputCache" />
</httpModules>
И снимите флажок «Включить кэш вывода» в «Кэшировании вывода» для моего сайта в IIS.
Что меня беспокоит, так это то, что у меня нет этой проблемы с другим моим сервером (iis 6.0), хотя на этом сервере включено кэширование, что наводит меня на мысль, что это связано с добавлением кэширования в iis 7.
У меня простой вопрос: как отключить кэширование на стороне сервера в IIS 7.5?
Заранее спасибо за ваши огни iis!
Нашел!
Извините, ребята, вы не могли догадаться, что я расширяю RazorViewEngine (фактически я использовал образец мобильного приложения-шаблона mvc3), и этот класс переопределяет FindView, он должен учитывать параметр useCache, но, видимо, независимо от того, как Я настраиваю IIS, он был установлен в true с iis7. Я установил его на false везде. Я посмотрю на соответствующую настройку этого параметра завтра.
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
Спасибо за вашу помощь, ребята, теперь я хорошо понимаю все возможности кэширования в IIS;). Интересно, что в IIS 7.0 это происходит по-разному (IIS6 и Cassiini были согласованы).
Edit:
Подробнее: http://aspnet.codeplex.com/workitem/8201?PendingVoteId=8201, это связано с работой отладки / выпуска FindView.
Это была моя точная проблема: http://aspnet.codeplex.com/workitem/8201?PendingVoteId=8201