2010-07-10 5 views
1

Я начинаю работать с memcache и движком приложений (java). У меня есть страница, где я могу кэшировать результаты, полученные из хранилища данных. Пример:Базовая стратегия кэширования для простой страницы?

// index.jsp 
<% 
List<Horse> horses = datastore.getHorses(PMF.get()); 

for (Horse it : horses) { 
    %> 
    <div><%= it.getName() %></div> 
    <% 
} 
%> 

я могу поместить список лошади в кэш, но он будет делать больше смысла просто кэшировать все содержимое страницы? Я имею в виду, что в следующий раз, когда пользователь захочет загрузить эту страницу, просто верните весь контент html, хранящийся в кеше, в виде строки? Удивление, если это возможно или хорошая практика. Я не уверен, как бы это сделать в любом случае, так как мне нужно создать одну массивную строку всего содержимого html, затем напечатать() в jsp, а также сохранить ее в memcache, например:

// index.jsp 
<% 
List<Horse> horses = datastore.getHorses(PMF.get()); 

StringBuilder sb = new StringBuilder(); 
for (Horse it : horses) { 
    sb.append("<div>"); 
    sb.append(it.getName()); 
    sb.append("</div>"); 
} 

// Render contents. 
<%= sb.toString() %> 

// Also can store it in memcache for future requests. 
memCache.put("test/index.jsp", sb.toString()); 
%> 

Благодаря

+0

http://stackoverflow.com/questions/3217645/caching-contents-of-a-page Почему вы опубликовали два в основном одинаковых вопроса? Другой вопрос был первоначально отмечен только «jsp» и «servlet». Просто редактирование вопроса для добавления тегов к текущему вопросу получило более широкую аудиторию (пользователи здесь в основном просматривают теги). – BalusC

+0

Я предполагаю, что этот вопрос не специфичен для конкретного приложения - это больше - как я могу получить весь контент моей страницы jsp в строку? Нужно ли мне это делать вручную, используя подход StringBuilder, или есть способ захватить все, что было сделано в PrintWriter в конце документа, чтобы сделать это? – user246114

+0

Я уже ответил, что в другом вопросе. – BalusC

ответ

0

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

Кэширование списка лошадей потребует сериализации и десериализации списка. Это может также кэшировать информацию, которая вам не нужна (т. Е. Информация, не используемая на вашей странице). С другой стороны, ваша HTML-страница - это просто текст, поэтому сериализация/десериализация это почти не-op.

+0

Да, я предпочитаю кэшировать html. Нужно ли переписывать всю страницу с помощью подхода StringBuilder или я могу захватить все, что было написано на странице до сих пор в нижней части файла jsp, например: servlet.getPrintWriter(). GetContents(), чтобы захватить все, что было нажато туда так далеко? – user246114

Смежные вопросы