Во всех смыслах и целях я считаю, что выходной кеш полностью находится в памяти, а это означает, что если пул приложений будет переработан, изображение необходимо будет сгенерировать заново.
Мне приходилось делать что-то подобное в прошлом, и я фактически реализовал двухуровневую систему, которая в основном использовала кеш HTTP, а файловую систему использовал как запасной вариант. Если чего-то не было, я сгенерировал изображение, сохранил его на диск и поместил в кеш. Таким образом, если он выталкивается из кеша или пул приложений перезагружается, мне нужно только загрузить его с диска (похоже, вы сделали то же самое).
Что касается «слишком много памяти», если вы явно используете HttpContext.Cache вместо [OutputCache], вы можете контролировать приоритет элемента в кеше. Затем вы можете настроить параметры пула приложений, чтобы контролировать, сколько памяти он использует в целом, но я не уверен, что еще много чего нужно сделать, кроме этого. Пара изображений * 12 продуктов мне не кажется, что это займет много памяти.
Мне кажется, что ничего не зная о вашем приложении, вы могли бы обойтись простым использованием кэша вывода. Однако, если вам нужно что-то более надежное и масштабируемое, я бы использовал описанную мною двухуровневую систему. Хотя, если у вас это уже реализовано и работает, «если оно не сломано ...»
person
Daniel Schaffer
schedule
28.01.2009