| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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. Всё в порядке. А что значит
? |
| Автор: 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 | ||||||||
Спасибо!
Когда я запрашиваю страницу, мне возвращается http-response. В нем есть различные http-заголовки. Так вот, для того, чтобы клиентский браузер мог закешировать уже загруженную страницу, а не тянул ее каждый раз с сервера, нужно чтобы в заголовках Cache-Control и Last-Modified стояли определенные значения. Так вот, ehcache их не проставляет (а oscache проставляет). Добавлено через 1 минуту и 26 секунд
Если 100 разных клиентов запросят одну и ту же страницу, то при браузерном кеше сервер будет 100 раз просчитывать страницу (вместе с тяжелыми запросами к базе и т.д.), а при серверном кеше - один раз, а потом будет просто отдавать 100 раз строковой буфер клиентам. |
| Автор: Zamuta 17.8.2007, 18:35 |
| Я так понимаю, что в случае с ehcache, новые запросы не дёргуют сервер каждый раз пока данные есть в кэше (опер. память или на жёстком диске) а отдают из кэша, т.е. у пользователя страница грузится заново, но зато сервер не мучается.... |
| Автор: Barvetal 27.8.2007, 12:46 | ||
Примерно так. Единственное что, сервер работает и в этом случае. Разница только в том, что он не лезет каждый раз в базу данных и не просчитывает страницу, а отдает уже готовый закешированный html-код из своей области памяти |