Мое выходное кэширование не работает должным образом Это метод контроллера, который возвращает страницу по умолчанию для моего сайта. я кэшировать его для 40secs (тест -> в прямом эфире он кэшируется гораздо дольше)OutputCache не работает правильно -> ASP.NET MVC5
[OutputCache(Duration = 40, Location = OutputCacheLocation.ServerAndClient, VaryByParam = "none")]
public async Task<ActionResult> Index(){
......
}
У меня есть 2 проблемы
Первый
Когда я попал в конечную точку для первой время, которое оно кэшируется правильно на сервере и возвращает следующий заголовок ответа (как и ожидалось) среди других.
status:200
Cache-Control:"private, max-age=40, s-maxage=0"
Когда я открываю новую вкладку браузера и вставляю ее в ту же конечную точку через 5 секунд. он отправляется на сервер и возвращает 200 с содержимым, а следующий заголовок
status:200
Cache-Control:"private, max-age=63622944145, s-maxage=63622944105"
Это не похоже на меня. Я ожидал, что он отправит запрос на сервер с заголовком If-modified-since. Если кешированный ответ был перестроен с момента времени в заголовке, он вернул бы 200 + содержимое else 304. Таким образом, в этом случае, когда кеш-сервер не был перестроен, он должен вернуть 304. Также, поскольку максимальный возраст настолько велик он теперь недействителен и поэтому сразу считается устаревшим. Так что я делаю неправильно ...?
Во-вторых
я поставил точку останова в мой метод индекса и попал в конечную точку из браузера. В первый раз, когда я попал в конечную точку Индекса, точка останова попала. Последующие запросы к конечной точке не попадают в точку останова в течение следующих 40 секунд, как ожидалось. Однако, если я добавлю «/» в конец моей конечной точки в браузере, он попадет в точку останова, игнорируя кеш. Как этого избежать?
Что касается второй половины вашего вопроса, URL «http://www.example.com» и «http://www.example.com/» , с /, - разные страницы. Вам нужно будет иметь модуль перезаписи URL в Web.Config, если вы хотите, чтобы к обоим относились одинаково. Я изменю свой ответ ниже. – kodikas