|
|
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
Вообщем картинки на сайте (контент) хранятся непосредственно в БД, чтобы базу разгрузить хочу сделать кеш в файловой системе, подскажите может есть статья с описанием такого механизма, хочется почитать чтото на эту тему перед тем как начать велосипед свой изобретать :-) погуглил но что то не нашел ничего :-( You can't hide from your past. You'll end up running in circles. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 13:25:00 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
Любой кэш подойдет http://java-source.net/open-source/cache-solutions ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 13:59:07 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
Предлагаю подумать ешё над одним решением. В случае картинок оно может быть лучше кеширования. Суть в том что надо файлы выкладывать непосредственно на HTTP сервер (Apache/IIS), и переодисечки их там обновлять изз базы. - HTTP сервер гораздо лучше справится с тем чтобы отдавать картники. - Производительность Java сервера приложений возрастет, так как исчезнет сразу куча потоков обрабатывающих запросы на картинки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 14:23:24 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПредлагаю подумать ешё над одним решением. В случае картинок оно может быть лучше кеширования. Суть в том что надо файлы выкладывать непосредственно на HTTP сервер (Apache/IIS), и переодисечки их там обновлять изз базы. Да я вот так как раз и думаю сделать, у меня перед сервером приложений будет просто Apache HTTP сервер стоять и разруливать запросы по картинкам в отдельный каталог (кеш). Меня собственно интересуют сами технологии создания этого кеша в файловой системе. В принципе логика не сложная, интересовало есть ли какието стандартные паттерны для этого решения или подводные камни которые могут возникнуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 15:14:11 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
Как минимум, не забудьте при отправке картинок выдавать заголовок Last-Modified, что позволит использовать механизм кэширование клиентских браузеров и прокси-серверов. За счет чего можно заметно снизить трафик и загрузку сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 17:11:27 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
KachalovКак минимум, не забудьте при отправке картинок выдавать заголовок Last-Modified, что позволит использовать механизм кэширование клиентских браузеров и прокси-серверов. За счет чего можно заметно снизить трафик и загрузку сервера. Помоему HTTP сервер с этим сам чудесно справляется работая на прямую с файловой системой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 17:28:05 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПомоему HTTP сервер с этим сам чудесно справляется работая на прямую с файловой системой. - да, если файлы берутся из файловой системы. Мой совет на тот случай если файлы будут браться напрямую из базы (как это сделано сейчас), возможно после отправки необходимых заголовков HTTP острота проблемы заметно снизится и можно будет обойтись без самодельного кэша, т. е. решить проблему "малой кровью". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 17:41:29 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
Kachalov возможно после отправки необходимых заголовков HTTP острота проблемы заметно снизится и можно будет обойтись без самодельного кэша, т. е. решить проблему "малой кровью". Да нет я всетаки планирую вывести выдачу картинок из под сервера приложений и базы. Просто сейчас систему проектирую и хочу в архитектуру заложить кеширующий механизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 18:05:19 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
branicki Kachalov возможно после отправки необходимых заголовков HTTP острота проблемы заметно снизится и можно будет обойтись без самодельного кэша, т. е. решить проблему "малой кровью". Да нет я всетаки планирую вывести выдачу картинок из под сервера приложений и базы. Просто сейчас систему проектирую и хочу в архитектуру заложить кеширующий механизм. - а зачем тогда Вы их вообще храните в БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 18:22:24 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
Kachalov- а зачем тогда Вы их вообще храните в БД? Потому что планируется высокая нагрузка, будет единый сервер бд и несколько серверов с Application server которые обращаются к бд. Соответственно при добавлении изображения оно попадает в базу а затем кешируется в файловой системе на каждом application server. Во вторых как мне кажется когда все лежит в базе контроль целостности данных надежнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 19:16:27 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
branicki Потому что планируется высокая нагрузка, будет единый сервер бд и несколько серверов с Application server которые обращаются к бд. Соответственно при добавлении изображения оно попадает в базу а затем кешируется в файловой системе на каждом application server. Во вторых как мне кажется когда все лежит в базе контроль целостности данных надежнее. Есть мнение, что если планируется действительно высокая нагрузка, то хранить изображения в базе не стоит. Они нагнут её аж бегом. Проконсультируйтесь на соответвующем форуме. Зачастую даже если сама база не просядет, то может просесть канал между серверами приложений и базой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 19:59:55 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЕсть мнение, что если планируется действительно высокая нагрузка, то хранить изображения в базе не стоит. Ну да тоже про это думал, но у меня приложение такого плана что большинство транзакций будет на чтение (я имею ввиду картинки) или лишь малая часть на запись. Поэтому и хочу сделать грамотный кеш чтобы базу не дергать при каждом запросе а выдавать изображения как статику. Где то видел в сети соображения на эту тему но чтото вот потерял линк :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 20:19:05 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПроконсультируйтесь на соответвующем форуме. Да я вот везде где видел рассуждения на эту тему то все везде к холиворс сводилось на эту тему... конкретики нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 20:28:19 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
branickiНу да тоже про это думал, но у меня приложение такого плана что большинство транзакций будет на чтение (я имею ввиду картинки) или лишь малая часть на запись. Это не очень важно. Все равно в какую сторону данные едут. Канал просядет именно из-за количества. branickiПоэтому и хочу сделать грамотный кеш чтобы базу не дергать при каждом запросе а выдавать изображения как статику. "грамотный" Ж) Все хотят такой. А получается как обычно. branickiГде то видел в сети соображения на эту тему но чтото вот потерял линк :-( Ну, на rsdn пару раз обсуждали. Принципы одни и теже ли бо скедулер какой запускать который будет обновления из базы на сервер выкладывать понемногоу. Либо надо статические файлы обновлять при апдейте оных в базе. Так как у тебя записи изображений будет мало, то можно все эти апдейты/инсерты перехватывать и обновляьт статический контент в соответствии с ними. Единственный вопрос это кластер. Хотя со стаический контентом по идее и один сервак справится, но события записи придется ловиить на всех нодах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 20:35:43 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
branickiу меня приложение такого плана что большинство транзакций будет на чтение (я имею ввиду картинки) или лишь малая часть на запись. Поэтому и хочу сделать грамотный кеш чтобы базу не дергать при каждом запросе а выдавать изображения как статику. NFS + RAID 1 - Вам помогут в вопросах скорсти чтения, надежности хранения данных и одновременного доступа нескольких нод! Не кладите картинки в базу, даже при относительно небольшой нагрузке сильно поедаются ресурсы, память стремится к нулю а загрузка процессора к 100% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 21:12:05 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
стандартная задача... все знают, что сервлет контейнеры расчитаны на динамическое генерирование страниц, и пефоманс у них при работе со статикой не самый лучший. Стандартное решение, как вариент - это связка вебконтейнера с апачем, к примеру для апача есть мод для томкета, пускающий тандемом томкет и апач, где динамика обрабатывается томкетом, а статика апачем... в сети на эту тему полно информации... А собственноручные поделки в области улучшения производительности до добра никода не доводили, ибо есть такое выражение у программистов, довольно точно описывающая процесс проектирования ПО в одной фразе, Make it run, make it right, make it fast, make it small... А у Тейта в биттер джаве совершенно правльно подмечено, что оптимизировать надо только тогда, когда оптимизация требуется, поэтому предлагаю не заморачиваться этим на этапе проектирования, в конце концов это не тот вопрос, который требует больших изменений в коде... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 21:58:15 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
Знаете у меня идея такая появилась... Вообщем у меня в плане было как и сказал y3u ставить связку Apache HTTP c прицелом на контенер сервлетов. А вот касательно того как можно сделать чтобы кеш на всех нодах кластера был актуальный: К Apache HTTP привинтить PHP и когда идет запрос на статическую картинку обрабатывать через mod_rewrite PHP скриптом, который будет лезть в базу и сравнивать время обновления файла в кеше со временем обновления записи в базе, если в кеше данные старые или отсутствуют то обновить/создать картинку из базы, если данные актуальные то выдать содержимое файла из кеша. Получится что к базе будет идти совсем небольшой запрос, и получится что каждая нода сама по мере необходимости обновляет свой кеш. You can't hide from your past. You'll end up running in circles. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 23:30:07 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
branickiВообщем у меня в плане было как и сказал y3u ставить связку Apache HTTP c прицелом на контенер сервлетов. - ну вот, начали про сервера приложений, а теперь они стали контейнерами сервлетов :( branickiК Apache HTTP привинтить PHP и ... - Вы еще про базу ничего не сказали. Часом не MySQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 00:48:17 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
Kachalov- ну вот, начали про сервера приложений, а теперь они стали контейнерами сервлетов :( ну а собственно в чем проблема тотже Томкат идет ведь в составе сервера приложений. Я вообще когда говорил имел ввиду что на localhost:80 сидит Apache HTTP, а на localhost:8080 контейнер сервера приложений. Kachalov- Вы еще про базу ничего не сказали. Часом не MySQL? почему ирония? :-) MySQL позорно использовать в качестве БД когда заходит речь о серверах приложений и высоких материях а-ля кластеризация??? :-))))) Я через HIBERNATE (завернутый в DAO) делаю работу с бд, поэтому вроде как не особо принципиально что за база. Тестироватся все будет на PostgreSQL и MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 01:55:01 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
branickiтотже Томкат идет ведь в составе сервера приложений - если речь идет о сервере приложений, то подразумевается использование технологии EJB, в идеологию которой хранение картинок в базе вполне вписывается, а если речь идет о "голом" контейнере сервлетов (сервлеты/JSP/JSF и т.п.), то это другой уровень решения проблемы производительности и соответственно другие способы решения этой проблемы, т. е. опять ставится под сомнение необходимость хранить картинки в базе :) branickiпочему ирония? :-) MySQL позорно использовать в качестве БД когда заходит речь о серверах приложений и высоких материях а-ля кластеризация??? :-))))) - проблема не в кластеризации, а в тех данных и объемах данных которые Вы собираетесь хранить в базе. Вот Вы писали что храните картинки в базе для "контроля целостности данных" (видимо имелась в виду обработка данных в рамках транзакций?), но транзакционный механизм в MySQL работает на таблицах типа InnoDB, которые заметно проигрывают по быстродействию и т. д. таблицам типа MyISAM, которые собственно и позволяют характеризовать MySQL как надежную и быструю БД, простую в обслуживании. Если Вы откажетесь от InnoDB в пользу MyISAM, то просто теряется единственный аргумент как-то оправдывающий хранение картинок в базе. В общем странновато выглядит описание задачи вместе с выбором продуктов. Дело конечно Ваше, но мне кажется что Вы сейчас роете себе яму из которой потом придется выбираться :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 14:03:51 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
очень жаль, что пропустил предыдущее обсуждение ... но у меня опыт прямо противоположный при выкладывание около 600 000 файлов размеров до 30К каждый в файловую систему /webapp/my_root скорострельность под Томсат была никакой даже при относительно низкой загрузке - порядка 20-30 просмотров в минуту. проблему удалось решить как раз засовыванием в базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 14:07:58 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
i23mочень жаль, что пропустил предыдущее обсуждение ... но у меня опыт прямо противоположный при выкладывание около 600 000 файлов размеров до 30К каждый в файловую систему /webapp/my_root скорострельность под Томсат была никакой даже при относительно низкой загрузке - порядка 20-30 просмотров в минуту. проблему удалось решить как раз засовыванием в базу. Ну собственно обсуждение еще не закончено :-) у меня был опыт в бытность разработки PHP когда действительно при большом количестве картинок в файловой системе падала производительность. Тогда это лечилось нормализацией структуры. Тоесть картинки не пихались все сразу скажем в папку images/, а создавалась древовидная структура типа images/mercedes/sclass, images/bwm/7series и.т.п. потому как тормозила файловая система при большом количестве файлов в одной папке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 14:21:18 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
секундочку, а зачем тода кеш? вообще, если мы говорим об хттп, есть такое понятие, как кеширующие прокси - это готовое стандартное решение, которое лежит НАД кластером, не нужно морочиться с распределением данных... потом, что подразумевается под актуальностью? рассинхронизация с БД? Как ты будешь синхронизировать? Кеш тебе не поможет, если он будет при каждом запросе залезать в бд и проверять актуальность картинки, то толку от кеша будет меньше... Так что большие данные, скажем больше 300 КБ храни на харде, а что меньше - в БД... сделать на харде репликацию легко, серьезные хостеры постоянно бекапят свои серваки на стриммеры, к примеру, к тому же у них всяческие рейды вертятся, т.ч. это по надежнее БД будет даже :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 14:26:56 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
i23mочень жаль, что пропустил предыдущее обсуждение ... но у меня опыт прямо противоположный при выкладывание около 600 000 файлов размеров до 30К каждый в файловую систему /webapp/my_root скорострельность под Томсат была никакой даже при относительно низкой загрузке - порядка 20-30 просмотров в минуту. проблему удалось решить как раз засовыванием в базу. - вообще то было бы неплохо добавить к такому сообщению более подробное описание системы: ОС? файловая система? наличие RAID и его уровень? тип выкладываемых файлов? статика? динамика? физическое расположение файлов базы? на том же диске или может на другой машине? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 14:28:09 |
|
||
|
Веб сайт кеширование изображений
|
|||
|---|---|---|---|
|
#18+
sorry ... 1. Windows 2003 web server edition 2. ntfs 3. raid-0 (зеркало) 4. обычные html готовые целиком к публикации. правда в них были ссылки на стили и картинки, которые хранились в отдельных каталогах. эти html обновлялись / перезаписывались эпизодически. около 500 файлов заменялось в день. 5. все на одной машине - Tomcat, Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 14:44:06 |
|
||
|
|

start [/forum/topic.php?fid=59&startmsg=34518991&tid=2145771]: |
0ms |
get settings: |
13ms |
get forum list: |
19ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
51ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
94ms |
get tp. blocked users: |
2ms |
| others: | 277ms |
| total: | 487ms |

| 0 / 0 |
