Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Кэширование - как лучше? / 8 сообщений из 8, страница 1 из 1
15.10.2006, 00:47
    #34055428
Limonad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование - как лучше?
Необходимо выводить картинки из БД, для этого использую HttpHandler. Но при каждом его вывове происходит подключение к БД, а на странице имеется 10 картинок => 10 подключений.

Как сделать оптимальное кэшировыание этих картинок. Причём используется постраничный вывод, т.е. картинок на самом деле около 100 только на страницу их выводится по 10 штук.

Рассматриваю такой вариант, при запросе данной страницы в событии Page_Load будет осуществляться одно подключение к БД, при котором будут вытягиваться эти 10 картинок и записываться в Session или Cache, и в HttpHandler будт использоваться эти данные  из Сессии или из Кэша.

Может кто-нибудь посоветует лучше вариант?
...
Рейтинг: 0 / 0
15.10.2006, 01:17
    #34055444
ok2
ok2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование - как лучше?
cache - нормальный вариант
...
Рейтинг: 0 / 0
15.10.2006, 10:54
    #34055535
Limonad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование - как лучше?
cache - нормальный вариант
 
Такой вариант скорее всего не подходит.
Т.к., допустим, один пользовтель запрашивает страницу с первыми 10 фотографиями, у него загрузилось только первых пять,  т.е. в кэше находится эти первые десять фотографий.
 
 Затем другой пользователь запрашивает страницу со вторыми 10 фотографиями, соответсвенно содержимое кэша изменилось, в нём теперь находится второй 10-ок фотографий => т.е. для первого  пользователя одна половина фотографий из его запроса, вторая половина из запроса второго пользователя.

1. Может тогда хранить Все 100 картинок в кэше, но чё-то как-то много памяти будет сжираться.

2. Ещё вариант, это каждый раз при запросе страницы загружать картинки не в Cache, а в Session, но опять как-то не рационально, т.к. если одновременно запросят страницу 10 человек то в памяти будет находится 100 картинок.

Чё-то я совсем запутался.
 
...
Рейтинг: 0 / 0
15.10.2006, 13:05
    #34055596
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование - как лучше?
А оно вообще нужно это кэширование ? Вы считали какой будет выигрыш по времени загрузки страницы ?
...
Рейтинг: 0 / 0
15.10.2006, 16:38
    #34055722
Limonad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование - как лучше?
Выйгрыша практически никакого (но он есть
), но это не заметно при заходе на страницу одного пользователя, но если их будет штук 10 одновременных, это стразу выливается в 110 подключений к БД.

Т.к. на каждого пользователя открывается соединение при событиии Page_Load и т.к. на каждую картинку срабатывает HttpHandler ( их всего десять на странице). Итого 110 подключений.

А если кэшировать например тот же ДатаТэйбл, в котором содержатся эти картинуи, на 30 секунд заместо 110 подключений в течение этих тридцати секунд будет произведено только ОДНО подключение к БД. Как я понимаю кэширование вообще необходимо для масштабируемости приложения.
...
Рейтинг: 0 / 0
15.10.2006, 19:09
    #34055800
Limonad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование - как лучше?
 Как я понимаю кэширование вообще необходимо для масштабируемости приложения.
 
Или я не прав?
...
Рейтинг: 0 / 0
16.10.2006, 03:26
    #34055955
NEKRASSOV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование - как лучше?
Limonadcache - нормальный вариант
 
Такой вариант скорее всего не подходит.
Т.к., допустим, один пользовтель запрашивает страницу с первыми 10 фотографиями, у него загрузилось только первых пять,  т.е. в кэше находится эти первые десять фотографий.
 
 Затем другой пользователь запрашивает страницу со вторыми 10 фотографиями, соответсвенно содержимое кэша изменилось, в нём теперь находится второй 10-ок фотографий => т.е. для первого  пользователя одна половина фотографий из его запроса, вторая половина из запроса второго пользователя.

1. Может тогда хранить Все 100 картинок в кэше, но чё-то как-то много памяти будет сжираться.

2. Ещё вариант, это каждый раз при запросе страницы загружать картинки не в Cache, а в Session, но опять как-то не рационально, т.к. если одновременно запросят страницу 10 человек то в памяти будет находится 100 картинок.

Чё-то я совсем запутался.  

А еще есть в файле Global.asax событие Application_OnStart. В нем можно загрузить ОДИН раз за ОДНО подключение в кэш штук 50 (или сразу сто?), которые будут чаще запрашиваться. А в БД - фиксировать частоту запросов. И регулировать состав картинок в кэше со временем по частоте запросов. Их еще можно сохранить, как переменные уровня приложения. Это, вроде не совсем кэш...
...
Рейтинг: 0 / 0
16.10.2006, 03:49
    #34055963
Bald
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование - как лучше?
Вот тут: http://msdn.microsoft.com/msdnmag/issues/04/04/CuttingEdge/
есть контрол, который выводит рисунки и тут же сохраняет их в кеш, при повторном вызове будет использоваться кеш, время нахождения картинки в кеше можно регулировать ну итд.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Кэширование - как лучше? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]