页面静态化

什么是页面静态化

根据课程发布的操作流程,执行课程发布后要将课程详情信息页面静态化,生成html页面上传至文件系统。

什么是页面静态化?

课程预览功能通过模板引擎技术在页面模板中填充数据,生成html页面,这个过程是当客户端请求服务器时服务器才开始渲染生成html页面,最后响应给浏览器,服务端渲染的并发能力是有限的。

页面静态化则强调将生成html页面的过程提前,提前使用模板引擎技术生成html页面,当客户端请求时直接请求html页面,由于是静态页面可以使用nginx、apache等高性能的web服务器,并发性能高。

什么时候能用页面静态化技术?

当数据变化不频繁,一旦生成静态页面很长一段时间内很少变化,此时可以使用页面静态化。因为如果数据变化频繁,一旦改变就需要重新生成静态页面,导致维护静态页面的工作量很大。

根据课程发布的业务需求,虽然课程发布后仍可以修改课程信息,但需要经过课程审核,且修改频度不大,所以适合使用页面静态化。

静态化测试

下边使用freemarker技术对页面静态化生成html页面。

在内容管理service工程中添加freemarker依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

编写测试方法

templates/course_template.ftl在test下的resources
/**
 * @author Mr.M
 * @version 1.0
 * @description freemarker测试
 * @date 2022/9/20 18:42
 */
@SpringBootTest
public class FreemarkerTest {

    @Autowired
    CoursePublishService coursePublishService;


    //测试页面静态化
    @Test
    public void testGenerateHtmlByTemplate() throws IOException, TemplateException {
        //配置freemarker
        Configuration configuration = new Configuration(Configuration.getVersion());

        //加载模板
        //选指定模板路径,classpath下templates下
        //得到classpath路径
        String classpath = this.getClass().getResource("/").getPath();
        configuration.setDirectoryForTemplateLoading(new File(classpath + "/templates/"));
        //设置字符编码
        configuration.setDefaultEncoding("utf-8");

        //指定模板文件名称
        Template template = configuration.getTemplate("course_template.ftl");

        //准备数据
        CoursePreviewDto coursePreviewInfo = coursePublishService.getCoursePreviewInfo(2L);

        Map<String, Object> map = new HashMap<>();
        map.put("model", coursePreviewInfo);

        //静态化
        //参数1:模板,参数2:数据模型
        String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
        System.out.println(content);
        //将静态化内容输出到文件中
        InputStream inputStream = IOUtils.toInputStream(content);
        //输出流
        FileOutputStream outputStream = new FileOutputStream("D:\\develop\\test.html");
        IOUtils.copy(inputStream, outputStream);

    }

}

相关推荐

  1. 页面静态

    2024-05-12 13:54:09       8 阅读
  2. 静态页面负载均衡

    2024-05-12 13:54:09       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 13:54:09       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 13:54:09       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 13:54:09       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 13:54:09       18 阅读

热门阅读

  1. C#识别图片数字

    2024-05-12 13:54:09       8 阅读
  2. C++的数据结构(一)

    2024-05-12 13:54:09       6 阅读
  3. 【视频/图像数据格式】基本视频/图像数据格式

    2024-05-12 13:54:09       7 阅读
  4. 了解WebSocket

    2024-05-12 13:54:09       12 阅读
  5. MapReduce

    MapReduce

    2024-05-12 13:54:09      6 阅读
  6. js方法 Array.prototype.slice()

    2024-05-12 13:54:09       10 阅读