Невидимое кеширование в ASP.Net MVC - PullRequest
1 голос
/ 29 июля 2010

Я создаю страницу с динамически генерируемыми изображениями, созданными из данных, поступающих из веб-сервисов. Генерирование изображений занимает достаточно много времени из-за времени, затрачиваемого на посещение веб-сервисов, поэтому мне нужно немного кешировать.

Один из вариантов - использовать параметр OutputCache для кэширования изображений, но мне не нравится заставлять какого-то неудачливого пользователя ждать очень долго. Я предпочел бы записывать изображения в файлы в фоновом режиме и использовать статический HTML.

Какой лучший способ сделать это? Я подумываю о создании специального URL-адреса для запуска обновлений, который записывает образы на диск, и о настройке какого-либо запланированного задания для перехода на URL-адрес обновления. Есть идеи получше?

Кажется возможным использовать memcached с ASP.Net, насколько сложно это будет настроить? Похоже, что это может быть излишним для этой ситуации (внутренний инструмент), и у меня уже есть работающая дисковая версия, но мне любопытно.

1 Ответ

1 голос
/ 30 июля 2010

Мы делаем что-то похожее, хотя мы просто предварительно вычисляем файлы / изображения и сохраняем их в HttpRuntime.Cache. Таким образом, наши представления могут быть сгенерированы как есть, но они обычно извлекают из кэшированных данных, а не генерируют на лету.

На случай, если кэшированные данные недоступны, у нас есть функции получения для их генерации:

public static GetGraph(int id)
{
    if (HttpRuntime.Cache["image_"+id] == null)
        HttpRuntime.Cache["image_"+id] = _imageGen.GenerateGraph(id);
    return HttpRuntime.Cache["image_"+id];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...