0 0

Spring MVC 缓存问题10

首先说一下,静态资源的缓存没有问题,该问题是关于动态内容的缓存,需求是获取各国家列表,因为国家列表内容相对稳定些,所以想利用缓存节省不必要的开销。

 

代码如下:

  • 用于获取各国家列表的 Controller:
    @Controller
    @RequestMapping("/country")
    public class CountryController{
    
    	@Autowired
    	private 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 时,请求头信息和响应头信息如下:

 

Request
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:JSESSIONID=FE1D5C67B795BEBB40C2A72367170A52
Host:localhost:8080
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36

 

 

 

Response
Cache-Control:max-age=31536000
Content-Language:zh-CN
Content-Length:4033
Content-Type:text/html;charset=UTF-8
Date:Sun, 23 Mar 2014 11:25:19 GMT
Expires:Mon, 23 Mar 2015 11:25:19 GMT
Server:Apache-Coyote/1.1

 

响应头信息中的 Cache-Control 和 Expires 都正确,多次刷新页面,通过浏览器调试工具查看,并没有从缓存中获取内容,希望懂的朋友帮忙找找原因。

 

 

 

 

 

 


问题补充:编辑器显示的有点问题,
响应头信息中 Cache-Control:max-age=31536000 以及
Expires:Mon, 23 Mar 2015 11:25:19 GMT

这不是表明要缓存吗?为什么浏览器并没有缓存
2014年3月23日 19:31

1个答案 按时间排序 按投票排序

0 0

采纳的答案

你对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,则每次都重复访问

按刷新按扭
无论为何值,都会重复访问。

2014年3月23日 21:45

相关推荐

    Spring MVC jar包

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为开发者提供了模型-视图-控制器(MVC)架构,使开发人员能够更好地组织和分离应用程序的业务逻辑、数据处理和用户界面。Spring MVC是Spring框架的一个核心组件,...

    使用maven简单搭建Spring mvc + redis缓存

    在IT行业中,构建一个高效的Web应用常常涉及到各种技术的整合,比如Spring MVC作为控制器层的框架,Redis作为高性能的键值存储系统用于缓存。本文将详细讲解如何使用Maven来简单搭建一个集成了Spring MVC和Redis缓存...

    Spring mvc 教程

    ### Spring MVC 教程知识点详解 #### Spring Web MVC 框架简介 Spring Web MVC 是 Spring Framework 的一个重要组成部分,主要用于构建基于 Java 的 Web 应用程序。它提供了一个灵活且强大的 MVC 实现,使得开发者...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    Spring框架则是一个全面的企业级应用开发平台,它不仅包含Spring MVC,还提供了依赖注入(DI)、AOP(面向切面编程)、事务管理、JDBC抽象、缓存、任务调度等多个核心功能。在全注解开发中,我们可以使用@Autowired...

    Spring mvc5.0.3 所有jar包

    以上只是Spring MVC 5.0.3中的一部分关键特性,实际上还有许多其他功能和优化,如国际化、缓存、上传文件等,都极大地提高了开发效率和应用程序的可维护性。在实际项目中,理解并熟练掌握这些知识点,将有助于构建出...

    spring、 spring mvc、 mybatis 开发的java客户关系管理系统,前端采用easyui编写.zip

    7. 性能优化:为了提升系统性能,可能需要实施缓存策略(如使用Spring Cache或Redis)、数据库连接池(如Druid或HikariCP)、以及合理的数据库索引设计。 8. 扩展性与维护性:采用模块化设计,每个功能模块独立,...

    Spring MVC Cookbook(PACKT,2016).pdf

    15. **性能优化**:了解如何缓存结果、使用CDN、优化视图渲染速度等,提升Spring MVC应用的性能。 通过这本书,开发者可以系统地学习Spring MVC的各个方面,提升在实际项目中的应用能力。无论你是初学者还是有经验...

    Spring MVC与MYBatis企业应用实战.pdf

    《Spring MVC与MYBatis企业应用实战》是一本深度探讨如何在实际企业环境中集成和运用Spring MVC和MYBatis两大主流技术的书籍。Spring MVC作为Spring框架的重要组成部分,是Java Web开发中的强大控制器,而MYBatis则...

    Spring MVC框架的各种依赖包下载

    Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构模式的实现,帮助开发者轻松地处理HTTP请求、数据绑定、视图渲染等任务。在使用Spring MVC时,依赖包的正确...

    Spring mvc+hibernate+mysql Demo

    【Spring MVC + Hibernate + MySQL 整合详解】 在IT领域,Spring MVC、Hibernate和MySQL是构建Web应用程序的常用技术栈。Spring MVC作为Spring框架的一部分,提供了强大的MVC(Model-View-Controller)架构,用于...

    bbs.zip_Spring mvc bbs_hibernate bbs_spring mvc_spring mvc hiber

    《Spring MVC + Hibernate 实现BBS论坛系统详解》 在当今的互联网开发中,Spring MVC 和 Hibernate 是两个非常重要的框架,它们在企业级应用开发中起着关键作用。本项目"Spring MVC bbs"结合了Spring3和Hibernate,...

    综合spring mvc + spring + hibernate + bootstrap开发图书管理系统

    在本项目中,我们利用了Java技术栈中的四个核心组件:Spring MVC、Spring、Hibernate以及Bootstrap,构建了一个全面的图书管理系统。这个系统旨在提供高效、用户友好的图书管理功能,涵盖了从图书入库、检索到借阅、...

    Spring mvc整合redis实例(redis连接池)

    在现代Web应用开发中,Spring MVC作为主流的MVC框架,常常需要与各种持久层技术进行集成以提高数据处理效率。Redis,一个高性能的键值存储系统,常被用于缓存、消息队列等场景。将Spring MVC与Redis结合,可以有效...

    spring mvc+spring+hibernate+bootstrap+mysql 考勤及薪酬管理系统

    《基于Spring MVC+Spring+Hibernate+Bootstrap+MySQL的考勤及薪酬管理系统详解》 在现代企业信息化管理中,考勤和薪酬管理是至关重要的部分,它们直接影响到员工的工作积极性和公司的运营效率。本文将深入探讨一个...

    Spring mvc、 Spring、 Spring jdbc 整合实例源码

    Spring MVC、Spring和Spring JDBC是Java开发中非常重要的三大框架,它们构成了Spring框架的核心部分,广泛应用于企业级应用开发。本实例源码旨在提供一个整合这三者的基础模板,帮助开发者理解和掌握它们之间的协同...

    spring+spring mvc+mybatis案例整合.docx

    Spring+Spring MVC+MyBatis 框架整合案例 Spring 框架是 Java 平台上的一种开源框架,由 Rod Johnson 和 Juergen Hoellerสอง位开发者创建,于 2004 年首次发布。Spring 框架的主要目标是简化企业级应用程序的...

    Spring MVC整合Mybatis

    **Spring MVC 整合 Mybatis 知识点详解** 在现代Java Web开发中,Spring MVC 和 Mybatis 是两个非常流行的框架。Spring MVC 提供了强大的MVC架构支持,而Mybatis则是一个轻量级的持久层框架,专注于SQL映射。将两者...

Global site tag (gtag.js) - Google Analytics