OutputCacheFilter в Microsoft MVC Preview 4 на самом деле экономят на вызовах действия?

Синтаксис в условной замене является

(?{GROUP_MATCHED?}REPLACEMENT_IF_YES:REPLACEMENT_IF_NO}

. { и } необходимы, чтобы избежать двусмысленности, когда вы имеете дело с группами выше 9 и с названными группами захвата.

Так как Notepad ++ использует Boost-Extended Format String Syntax , см. эту документацию Boost :

Символ ? начинает условное выражение, общий вид:

?Ntrue-expression:false-expression

, где N - десятичная цифра.

Если под-выражение N было сопоставлено, тогда true-expression оценивается и отправляется на выход, в противном случае false-expression оценивается и отправляется на выход.

Обычно вам необходимо окружить условное выражение скобками, чтобы предотвратить неоднозначность.

Например, строка формата (?1foo:bar) заменит каждое соответствие, найденное с помощью foo, если под-выражение $1 было сопоставлено, а с bar в противном случае.

Для подвыражений с индекс больше 9 или для доступа к именованным под-выражениям:

?{INDEX}true-expression:false-expression

или

?{NAME}true-expression:false-expression

blockqu ote>

Итак, используйте ([a-zA-Z])([a-zA-Z])?/([a-zA-Z])([a-zA-Z])? и замените на (?{2}$1$2:c$1)/(?{4}$3$4:c$3).

Вторая проблема заключается в том, что вы поставили квант ? внутри группы захвата, сделав шаблон внутри группы опциональным, но не вся группа . Это заставило группу всегда «участвовать в матче», и условие всегда было бы «истинным» (всегда соответствовало). ? должна количественно определять группу.

6
задан m_callens 9 March 2017 в 18:36
поделиться

2 ответа

Внутренне, OutputCacheAttribute (иначе фильтр выходного кэша) использует тот же внутренний механизм в качестве кэширования вывода страницы (иначе @OutputCache директива).

Поэтому это не немного быстрее, чем кэширование вывода страницы. Однако с MVC, Вы действительно не можете использовать кэширование вывода страницы с помощью @OutputCache директивы в MVC, потому что мы представляем представление (иначе страница) после выполнений действия. Таким образом, Вы получили бы очень мало выгоды.

С фильтром выходного кэша это делает корректную вещь и не выполняет код действия, если результат находится в выходном кэше. Надежда, которая помогает.:)

3
ответ дан 17 December 2019 в 07:10
поделиться

Просто знайте, что в настоящее время существует ошибка при вызове HTML. RenderAction (..) на Действии, которое отмечено, чтобы кэшироваться. Вместо определенного кэшируемого действия кэшируется вся страница. Я уже сообщил об этом относительно codeplex, и это, кажется, известная проблема: Вызов <% HTML.RenderAction <...> (...); %> к Действию с [OutputCache (..)] заставляет всю страницу кэшироваться.

1
ответ дан 17 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: