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


Автор: Barvetal 17.8.2007, 17:19
Всем здравсвуйте!

Написал сайт. Особенность его такова, что контент всех страниц обновляется раз в примерно десять минут, и нет никакой интерактивности с пользователем.

Исходя из этого логично использовать готовый механизм кеширования конечных страниц, что и было сделано при помощи сервлетного фильтра OsCache.

Однако с OsCache возникла серьезная проблема. Из-за бага в синхронизации потоков OsCache много страниц сайта перестают просто отдаваться. Этот баг разработчики знают и исправят в следующей версии OsCache (3.0, сейчас актуальная 2.4.1. Вот ссылка: http://jira.opensymphony.com/browse/CACHE-294). В связи с тем, что сроков они не называют, какие есть еще альтернативы для кеширования страниц, помимо OsCache?

Я смотрел на EhCache - там проблема в том, что его сервлетный фильтр не переписывает HTTP-заголовки. Да и активность на сайте разработки какая-то низкая.

А чем вы пользуетесь для кеширования страниц?

Заранее спасибо за ответы!

Автор: Zamuta 17.8.2007, 17:50
Barvetal, я пользуюсь EhCache 1.3.0. Всё в порядке.
А что значит 
Цитата
 его сервлетный фильтр не переписывает HTTP-заголовки

?

Автор: y3u 17.8.2007, 18:03
каюсь, не знаю... а нафига все это нужно? Браузеры ведь сами умеют кешировать страницы.

Автор: Zamuta 17.8.2007, 18:19
y3u, интерестные сравнения вот  http://docs.huihoo.com/javaone/2007/the-next-generation-web/TS-6175.pdf

Автор: Barvetal 17.8.2007, 18:28
Цитата
 Barvetal, я пользуюсь EhCache 1.3.0. Всё в порядке.

Спасибо!

Цитата
А что значит 
Цитата
 его сервлетный фильтр не переписывает HTTP-заголовки

?

Когда я запрашиваю страницу, мне возвращается http-response. В нем есть различные http-заголовки. Так вот, для того, чтобы клиентский браузер мог закешировать уже загруженную страницу, а не тянул ее каждый раз с сервера, нужно чтобы в заголовках Cache-Control и Last-Modified стояли определенные значения.

Так вот, ehcache их не проставляет (а oscache проставляет).

Добавлено через 1 минуту и 26 секунд
Цитата(y3u @ 17.8.2007,  18:03)
каюсь, не знаю... а нафига все это нужно? Браузеры ведь сами умеют кешировать страницы.

Если 100 разных клиентов запросят одну и ту же страницу, то при браузерном кеше сервер будет 100 раз просчитывать страницу (вместе с тяжелыми запросами к базе и т.д.), а при серверном кеше - один раз, а потом будет просто отдавать 100 раз строковой буфер клиентам.

Автор: Zamuta 17.8.2007, 18:35
Я так понимаю, что в случае с ehcache, новые запросы не дёргуют сервер каждый раз пока данные есть в кэше (опер. память или на жёстком диске) а отдают из кэша, т.е. у пользователя страница грузится заново, но зато сервер не мучается....

Автор: Barvetal 27.8.2007, 12:46
Цитата(Zamuta @ 17.8.2007,  18:35)
Я так понимаю, что в случае с ehcache, новые запросы не дёргуют сервер каждый раз пока данные есть в кэше (опер. память или на жёстком диске) а отдают из кэша, т.е. у пользователя страница грузится заново, но зато сервер не мучается....

Примерно так. Единственное что, сервер работает и в этом случае. Разница только в том, что он не лезет каждый раз в базу данных и не просчитывает страницу, а отдает уже готовый закешированный html-код из своей области памяти

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