在项目中为什么会使用网页静态化技术呢?
对于一个比较成型的电商网站来说,一个网站中的商品就会有成百上千个甚至上亿;那么问题就来了这些商品对应的每一个商品详情页面中的数据从哪里来呢
总不能每次都去数据库查询每一个商品的详情数据吧!会有人说可以把这些数据放到缓存中啊,每次按照商品的id去缓存中查询;就拿redis来说是基于内存的key-value数据库,用来做查询算是比较快的了吧,那么既然是基于内存的就会有内存占满或者控制使用不足的情况,所以想这些大量的数据就不建议使用缓存将他们保存起来,而是使用另一种方式:网页静态化技术;
网页静态化技术和缓存技术的共同点都是为了减轻数据库的访问压力,但是具体的应用场景不同,缓存适合比较小规模的数据,而网页静态化比较适合大规模的且相对变化不太频繁的数据(比如商品详情和新闻页);网页静态化还有利于SEO
FreeMarker介绍:
这里我们网页静态技术使用的模板是FreeMarker,像这种模板页面或许还有很多(例如:thymeleaf等)
什么是FreeMarker:
FreeMarker是一个用java语言编写的模板引擎,它基于模板来生成文本输出,FreeMarker与Web容器无关,即在Web运行
时他不知道Servlet或Http,他不仅可以用作在表现层的实现技术,而且还可以用于生成XML、JSP、或Java等
FreeMarker入门小Demo
这里我使用的是boot项目测试,将后台的参数在FreeMarker页面中显示出来
注:因为该项目是通过后台请求到模板页面,所以在创建项目的时候设置该项目的打包方式为war
demo结构目录:
1、首先创建一个boot项目,导入freemarker的依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
2、在application.properties配置文件中添加freeMarker的相关配置
#freemarker的相关配置
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
spring.freemarker.suffix=.ftl
spring.freemarker.content-type=text/html; charset=utf-8
spring.freemarker.template-loader-path=classpath:/templates
spring.mvc.static-path-pattern=/static/**
3、创建FreeMarker模板页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>欢迎</title>
</head>
<body>
${name}你好,${message}
</body>
</html>
4、编写后台控制层中的代码
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.HashMap;
import java.util.Map;
/**
* freeMarker测试
*/
@Controller
public class Demo {
@RequestMapping("/test")
public String test(String name, Model model) {
//封装要显示的数据
Map<String,String> map = new HashMap<String,String>();
map.put("name",name);
map.put("message","欢迎来到FreeMarker的世界");
//将数据使用Model带过去
model.addAllAttributes(map);
return "index";
}
}
最后成功启动该项目之后,访问test服务并带有参数,就能够成功响应到index.ftl页面了
下一篇介绍FreeMarker是如何做网页静态化:https://blog.csdn.net/qq_44322555/article/details/103809504
谢谢欣赏!!!