![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Barvetal |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 181 Регистрация: 31.10.2005 Репутация: 5 Всего: 5 |
Всем привет!
Разрабатываю новостийный сайт для своей компании. Нам необходимо создавать rss-ки наших новостей на экспорт. Нагрузка на rss-ки будет значительной, поэтому производительность критична. Поэтому хочу написать сервлет, который с периодичностью раз в 10 минут генерирует rss-ки, и кеширует сгенерированный контент в оперативной памяти. Когда клиенты обращаются к этому сервлету, он отдает им rss-ки из кеша в памяти. Вопрос мой следующий: Как правильно закешировать сгенерированные rss-ки? Может, есть уже готовые библиотеки для кеширования rss-ок? Или просто есть хорошие библиотеки для кеширования? Всем заранее спасибо! |
|||
|
||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 7 Всего: 13 |
а не проще писать XML-ник в вебконекст и отдавать его напрямую, а не заморачиваться сервлетом и кешированием? А обновление сделать через какой-нибудь шедулер, скажем через Quartz
-------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 2 Всего: 360 |
Кэшировать можешь простым Hashtable. Будешь складывать и доставать. У тебя ведь многопоточная запис/чтение не критично, так что никаких мегабиблкиотек подгружать не надо
Сможешь отправлять правильные заголовки раз всё равно генеришь раз в 10 минут. Смотри http-header: "Cache-Control: public, max-age=" . current_time() * 60*60*10); //Теперь клиент раньше чем через 10 минут файл на сервере не спросит. Дополнительно советую тебе в rss_content сохранять md5-хэш и дату создания самого файла. Посмотри также http-header 'Last-Modified: ' (заголобок сервера) и If-Modified-Since (заголовок клиента) Тогда не надо будет отправлять весь RSS на клиент, достаточно будет отправитьзаголовок: "HTTP/1.0 304 Not Modified", если запрос с ответом совпали. Ещё лучше работать с md5 и посылать/принимать по заголовкам: ETag (сервер) и If-Match (клиент). Тогда ты точно узнаешь, был ли модифизирован файл с момента последней скачки клиентом |
|||
|
||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: 6 Всего: 12 |
import sun.misc.Cache
Cache c=new Cache(); c.put("rss1", MyObject); или хранить в servletContext(application scope) |
|||
|
||||
| Barvetal |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 181 Регистрация: 31.10.2005 Репутация: 5 Всего: 5 |
Спасибо!
И еще один вопрос. А как лучше всего генерировать сам контент rss? Есть ли какая-то нормальная библиотека для генерации rss? Или все делать руками примерно вот так:
Спасибо! |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 2 Всего: 360 |
||||
|
||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 7 Всего: 13 |
чтобы написать валидный XML-ник без проблем можно заюзать доволно удобную библяотечку от джакарты ECS
-------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |