页面缓存,url缓存,对象缓存

本文介绍如何在Spring框架下实现页面缓存和URL缓存,通过配置application.properties和利用Thymeleaf模板引擎,将静态页面缓存在浏览器或Redis中,减少后端负载,提高响应速度。
摘要由CSDN通过智能技术生成

页面缓存,url缓存,

配置文件需要配置项

applicayion.property

#static
spring.resources.add-mappings=true
spring.resources.cache-period= 3600
spring.resources.chain.cache=true 
spring.resources.chain.enabled=true
spring.resources.chain.gzipped=true
spring.resources.chain.html-application-cache=true
spring.resources.static-locations=classpath:/static/

1.页面缓存

1.1将静态化页面缓存在浏览器,到页面过期后再访问后端加载

  1. 将页面静态化
  2. 修改后端获取接口
  3. 修改application.properties

1.2使用配置

controller层返回html文件的方法

	@Autowired
	ApplicationContext applicationContext;
	@Autowired
	ThymeleafViewResolver thymeleafViewResolver;
//  produces配置返回类型
    @RequestMapping(value="/to_list", produces="text/html")
    @ResponseBody
    public String list(HttpServletRequest request, HttpServletResponse response, Model model) {
    
    	SpringWebContext ctx = new SpringWebContext(request,response,
    			request.getServletContext(),request.getLocale(), model.asMap(), applicationContext );
    	//手动渲染
    	String html = thymeleafViewResolver.getTemplateEngine().process("goods_list", ctx);
    	if(!StringUtils.isEmpty(html)) {
    		String key = "html";
    		//将html缓存在redis中
    		redisService.set(key, html);
    	}
    	return html;
    }

url缓存

将带参数的静态化页面缓存返回给浏览器。

	@Autowired
	ThymeleafViewResolver thymeleafViewResolver;
	
	@Autowired
	ApplicationContext applicationContext;

    @RequestMapping(value="/to_detail2/{goodsId}",produces="text/html")
    @ResponseBody
    public String detail2(HttpServletRequest request, HttpServletResponse response, Model model,
    		@PathVariable("goodsId")long goodsId) {
    	//取缓存
    	String key = "html"+goodsId;
    	String html = redisService.get(key, String.class);
    	if(!StringUtils.isEmpty(html)) {
    		return html;
    	}
    	//使用goodsId获取页面所需要的参数
    	GoodsVo goods = goodsService.getGoodsVoByGoodsId(goodsId);
    	model.addAttribute("goods", goods);
    	
    	SpringWebContext ctx = new SpringWebContext(request,response,
    			request.getServletContext(),request.getLocale(), model.asMap(), applicationContext );
    	html = thymeleafViewResolver.getTemplateEngine().process("goods_detail", ctx);
    	if(!StringUtils.isEmpty(html)) {
    		redisService.set(key, html);
    	}
    	return html;
    }

对象缓存

url:对象缓存url

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值