Почему атрибут OutputCache требует установки параметра VaryByParam?
Я провел нулевое исследование по этому вопросу, мне просто любопытно.
Класс OutputCacheAttribute в ASP.NET MVC требует значения для Duration и VaryByParam. Я понимаю, почему продолжительность требуется, но не VaryByParam.
2 ответа
Обновление: Хорошо, начиная с последней версии MVC (3), она больше не требуется, и по умолчанию никакие параметры не используются, то есть, только когда существует кэш. Это поведение, которое я ожидал ранее.
Если бы они не требовали от вас настройки этого, вы можете непреднамеренно получить десятки тысяч кэшированных копий одной и той же конкретной страницы, тем самым лишив преимущества преимущества кэширования вывода.
Поэтому есть два решения: одно - проверить каждый вывод, чтобы увидеть, является ли он дубликатом, или два - сделать кэш зависимым от значений определенных переменных, связанных со страницей. Первый был, вероятно, слишком затратным, поэтому они пошли со вторым.
Они пытаются ввести вас в "яму успеха", заставляя вас осознать, что страница может отображаться по-разному, когда присутствуют определенные параметры строки запроса /POST, и заставляя вас задуматься о том, что означает выходное кэширование и как оно работает.