Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Страницы сайта обновляются раз в несколько минут.


Автор: Barvetal 18.10.2006, 16:55
Всем привет!

Написал сайт на java. Сайт информационный и практически все страницы сайта меняют свое содержимое раз в две минуты, потому что вся информация берется из базы, а в базу данные заливаются раз в две минуты. Интерактивности с пользователем практически нет (пользователь почти нигде не заполняет формы)

Проблема в том, что для отображения каждой страницы необходимо выполнить несколько десятков запросов к базе данных. В итоге каждая страница грузится секунд по десять. И это еще не предел, так как каждый день объем данных растет.

Можно ли как-то закешировать страницы, чтобы когда пользователь вводит адрес страницы, то страницы отдавались пользователю из кеша, а java обновляла кеш только раз в две минуты?

Как это сделать?

Используемые технологии на сайте: apache-tomcat-5.5.20, jetspeed-2, jdk1.5.

Всем заранее спасибо!

Автор: y3u 18.10.2006, 17:11
друг, надо оптимизировать запросы и нормализовывать БД... кэш - не выход. У меня тоже на одну страницу по несколько десятков запросов и нормально все рендерится... Потом рассмотри вариант, можно разнести функциональность по фреймам по принципу частоты загрузки, обновлять только нужный фрейм...

Автор: Barvetal 18.10.2006, 17:43
Понятно, что нужно оптимизировать запросы. Нужно учесть, что большинство из этих запросов - это запросы на поиск с джойном по таблицам с 200 000 записей. В любом случае это долго. А оптимизацией запросов я тоже занимаюсь.

Кроме того, зачем мне дергать java по несколько раз в секунду для получения одной и той же страницы, когда ее можно закешировать? Это ж и есть оптимизация.

Автор: JUncle 18.10.2006, 19:45
Цитата(y3u @  18.10.2006,  17:11 Найти цитируемый пост)
друг, надо оптимизировать запросы и нормализовывать БД... кэш - не выход

Почему не  выход? Запрос к БД - "дорогая№ операция. Смотря какой контекст применения в общем то...

Добавлено @ 19:47 
Цитата(Barvetal @  18.10.2006,  16:55 Найти цитируемый пост)
Используемые технологии на сайте: apache-tomcat-5.5.20, jetspeed-2, jdk1.5.

Существуют средства кеширования JSP страниц и сервлетов (например у Resin).
Но, как видно из цитаты, вряд ли конфигурацию сервера можно поменять.

Автор: batigoal 19.10.2006, 12:28
Цитата(Barvetal @  18.10.2006,  17:55 Найти цитируемый пост)
Можно ли как-то закешировать страницы, чтобы когда пользователь вводит адрес страницы, то страницы отдавались пользователю из кеша, а java обновляла кеш только раз в две минуты?

Может быть, имеет смысл кешировать не страницы, а объекты, с которыми они работают? У нас, например, механизм такой: сервлет при обращении не лезет непосредственно в базу, а пытается работать с объектами, находящимися в памяти. Если этих объектов нет, или они были последний раз перечитаны более 15 минут назад, то объекты считываются заново.

Автор: Barvetal 19.10.2006, 14:37
Цитата(batigoal @ 19.10.2006,  12:28)
Может быть, имеет смысл кешировать не страницы, а объекты, с которыми они работают?

Мы так и делаем. Однако все равно тратится процессорное время на конструирование страницы с использованием этих объектов. Зачем? Можно ж сразу закешировать готовые страницы

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)