2015-10-16 3 views
1

Я создал приложение Spring Hibernate Spring MVC. Я уже использую EhCache второго уровня Hibernate для повышения производительности.Увеличьте время загрузки страницы путем кэширования в приложении Spring-MVC Hibernate

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

Я использую этот код кэшировать всю мою страницу:

@RequestMapping(value = "/products", method = RequestMethod.GET) 
    public String getAllProducts(ModelMap model,HttpServletRequest request,HttpServletResponse response) { 
    model.addAttribute("products", "all products from backend"); 

    // caching the page 
    response.addHeader("Cache-Control","max-age="+CACHE_DURATION_IN_SECOND);//1 
    response.addHeader("Cache-Control", "must-revalidate");//2 
    response.setDateHeader("Last-Modified", now);//3 
    response.setDateHeader("Expires", now + CACHE_DURATION_IN_MS);//4 

    return "all-products"; 
    } 

Мои вопросы:

  1. ли выше код достаточно для обработки кэширования веб-страницы?
  2. Если да, то нужно ли добавить код выше во все мои методы контроллера, чтобы включить кеширование всех JSP?
  3. Если нет, то лучший способ кэшировать веб-страницу?
+0

Разве ваш браузер не кеширует ваши страницы? Вы проверили это без этого кода? –

+0

@ViswanathLekshmanan: Нет. Вы хотите сказать, что нам не нужно ничего делать для кэширования веб-страницы, браузер автоматически позаботится (когда истечет срок действия, переутвердите и т. Д.)? – Peter

+0

Автоматически ваш браузер кэширует страницы HTML, JS, CSS. Мы ограничиваем браузеры, когда нам не нужно кэшировать страницы, используя заголовки. Пожалуйста, проверьте то же самое –

ответ

1

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

Похоже, вы имеете в виду здесь кэш браузера - если это так, то, что ваш код предполагает, что ответ на запрос GET к /products отправляются с заголовками, которые инструктируют браузеры кэшировать ответ на определенный период. Теперь все запросы GET (ajax или не-ajax) из браузера должны быть отправлены из кеша браузера. Если это вы объективны, тогда это нормально. Однако существует еще один способ кэширования (который обычно используется для редко изменяющихся фрагментов страницы) - где ответ хранится в кеше на стороне сервера. Например, если вы используете JSP в качестве шаблона просмотра, то можно использовать что-то похожее на this technique. В этом случае кэширование происходит исключительно на сервере и полезно при агрегировании ответа от статических и динамических частей ответа.

+0

. Ваше понимание верное. Есть ли другой способ, кроме Cache taglib (выше вы сказали), я не хочу менять свой jsp-код? – Peter

1

Вы также можете использовать ETag, проверьте фильтр this.

Поскольку ETag основан на контенте ответа, ответ (например, вид) все еще отображается. Таким образом, этот фильтр сохраняет только пропускную способность, а не производительность сервера.

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