Spring MVC 缓存问题

问题描述

首先说一下,静态资源的缓存没有问题,该问题是关于动态内容的缓存,需求是获取各国家列表,因为国家列表内容相对稳定些,所以想利用缓存节省不必要的开销。 代码如下:用于获取各国家列表的 Controller:@Controller@RequestMapping("/country")public class CountryController{@Autowiredprivate CountryService countryService;@RequestMapping(method=RequestMethod.GET)public ModelAndView show(){ModelAndView mav = new ModelAndView();mav.addObject("countryMap", countryService.getCountries());mav.setViewName("test");return mav;}}缓存拦截器配置<mvc:interceptor> <mvc:mapping path="/country*" /> <bean class="org.springframework.web.servlet.mvc.WebContentInterceptor" > <property name="cacheMappings"> <map> <entry key="/country.json" value="31536000"></entry> <entry key="/country" value="31536000"></entry> </map> </property> </bean></mvc:interceptor>当请求 http://host:port/app/country 时,请求头信息和响应头信息如下: RequestAccept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Encoding:gzip,deflate,sdchAccept-Language:zh-CN,zh;q=0.8Cache-Control:max-age=0Connection:keep-aliveCookie:JSESSIONID=FE1D5C67B795BEBB40C2A72367170A52Host:localhost:8080User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36   ResponseCache-Control:max-age=31536000Content-Language:zh-CNContent-Length:4033Content-Type:text/html;charset=UTF-8Date:Sun, 23 Mar 2014 11:25:19 GMTExpires:Mon, 23 Mar 2015 11:25:19 GMTServer:Apache-Coyote/1.1 响应头信息中的 Cache-Control 和 Expires 都正确,多次刷新页面,通过浏览器调试工具查看,并没有从缓存中获取内容,希望懂的朋友帮忙找找原因。

解决方案

你对Cache-control理解的可能还不是很透彻,按照你描述的配置和测试结果来看,浏览器已经实现了缓存。但是你测试的方式为“多次刷新页面”,Cache-control的值不管是什么内容,只要刷新页面,页面都会重新访问服务器。因此问题不在于工程配置问题或springmvc没有生效,而是你测试方式有问题,测试时应该在地址栏再次“回车”而不是“刷新”。cache-control配置对应浏览器访问的服务器的规则:打开新窗口如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:Cache-control: max-age=5表示当访问此网页后的5秒内不会再次访问服务器在地址栏回车如果值为private或must-revalidate(和网上说的不一样),则只有第一次访问时会访问服务器,以后就不再访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。按后退按扭如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问按刷新按扭无论为何值,都会重复访问。

时间: 2024-10-02 16:00:25

Spring MVC 缓存问题的相关文章

spring mvc+spring3+hibernate4的事务不会自动清楚session缓存

问题描述 spring mvc+spring3+hibernate4的事务不会自动清楚session缓存 没有手动清缓存,就不执行插入SQL了手动清缓存的话,就能添加成功. 有知道原因的大神吗!!! 解决方案 没遇到过这种情况,tomcat么 解决方案二: 你这个没有加上事务,save时不会自动flush,加了事务之后commit时会自动flush.你配置事务了吗? 解决方案三: 贴出事务来看看,会不会没起作用

springmvc 缓存-spring MVC 3.1 ehcache 缓存无效

问题描述 spring MVC 3.1 ehcache 缓存无效 <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation" value="classpath:ehcache.xml" /> </

注释驱动的Spring cache缓存介绍

概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案 (例如 EHCache 或者 OSCache),而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种 annotation,即 能够达到缓存方法的返回对象的效果. Spring 的缓存技术还具备相当的灵活性,不仅能够使用 SpEL(Spring Expression Language)来定义缓存的 key 和各种 condition,还提供开箱即用的

Spring MVC入门 —— 跟开涛学SpringMVC

2014-05-14 23:22:27 第二章 Spring MVC入门 -- 跟开涛学SpringMVC  浏览(84979)|评论(12)   交流分类:Java|笔记分类: 跟开涛学Spring--  2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring

Spring MVC 详解

第一章 Web MVC简介Web MVC简介 1.1.Web开发中的请求-响应模型:   在Web世界里,具体步骤如下: 1.  Web浏览器(如IE)发起请求,如访问http://sishuok.com 2.  Web服务器(如Tomcat)接收请求,处理请求(比如用户新增,则将把用户保存一下),最后产生响应(一般为html). 3.web服务器处理完成后,返回内容给web客户端(一般就是我们的浏览器),客户端对接收的内容进行处理(如web浏览器将会对接收到的html内容进行渲染以展示给客户)

Http请求中Content-Type讲解以及在Spring MVC中的应用

引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在Spring MVC中如何使用它们来映射请求信息. Content-Type MediaType,即是Internet Media Type,互联网媒体类型:也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息. [html] view pl

spring mvc+shiro+cas 实现cas client功能 跳转回来404

问题描述 spring mvc+shiro+cas 实现cas client功能 跳转回来404 http://securitycenter.com:8080/gtsys/cas?ticket=ST-14-HEDhc1GVQt0UYdiZpi7R-cas 返回这个地址 404 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.or

Shiro系列之Shiro+Spring MVC整合

第一步,Shiro Filter 在web.xml文件中增加以下代码,确保Web项目中需要权限管理的URL都可以被Shiro拦截过滤. <!-- Shiro Filter --> <filter> <filter-name>shiroFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

求助:summernote+spring mvc图片上传报错

问题描述 求助:summernote+spring mvc图片上传报错 先是controller代码: @ResponseBody @RequestMapping("/sumimg.do") public Result upload(HttpServletRequest request) { Result result = new Result(); // 转换为文件类型的request MultipartHttpServletRequest multipartRequest = (M