Препятствуйте тому, чтобы много различных URL MVC заполнили Кэш ASP.NET

"Неявно" корректный ответ. Шаблоны эффективно создают "утку, вводящую" сценарий, из-за пути, которым они компилируются. Можно вызвать любые функции, которые Вы хотите на введенное шаблоном значение, и единственные инстанцирования, которые будут приняты, являются теми, для которых определяется тот метод. Например:

template <class T>
int compute_length(T *value)
{
    return value->length();
}

Мы можем назвать этот метод на указателе на любой тип, который объявляет length() метод возвращаться int. Таким образом:

string s = "test";
vector<int> vec;
int i = 0;

compute_length(&s);
compute_length(&vec);

..., но не на указателе на тип, который делает не , объявляют length():

compute_length(&i);

Этот третий пример не скомпилирует.

Это работает, потому что C++ компилирует новую версию функции templatized (или класс) для каждого инстанцирования. Поскольку это выполняет ту компиляцию, это делает прямую, почти подобную макросу замену из шаблонного инстанцирования в код до проверки типа. Если все все еще работает с тем шаблоном, то доходы компиляции и мы в конечном счете прибываем в результат. Если что-нибудь перестало работать (как int* не объявление length()), то мы получаем страшную шаблонную ошибку времени компиляции на шесть страниц.

6
задан Teun D 14 September 2009 в 14:41
поделиться

1 ответ

Well I thought it over (Teun and I work at the same company), and we have two options as far as I can tell:

  1. Do nothing. This article contains a comment from one asp.net team guy, and it shows a couple of ways to prevent the cache from growing and growing: http://forums.asp.net/p/985551/3297967.aspx#3297967, yet doesn't solve the problem of writing a cache entry for each possible route but guarantees that the cache won't throw some out of memory exception.

  2. Solve the problem with a workaround, use querystring parameters instead of fixed routes (/controller.mvc?action=X¶ms=Y instead of controller.mvc/action/params). This way only controller.mvc gets cached.

After all, I don't think this really is a problem.

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

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