博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
怎样应对高并发 —— 动态站点静态化
阅读量:6309 次
发布时间:2019-06-22

本文共 1733 字,大约阅读时间需要 5 分钟。

零. 前言
为了应对高并发, 大多数站点在更新不频繁的页面都做了动态网页静态化处理。 典型的如: 淘宝的首页、 网易新闻的首页等。

当然这些站点载入速度这么快。 不不过静态化。 还有 CDN、 缓存等各个方面的优化。 从阿里在 InfoQ

 双十一架构的分享中提到使用 CDN + nginx + JBoss + 缓存作为 Detail 页面的架构, 将页面信息进行静态化缓存。 以上。 能够看出静态化技术的重要性及普遍性。 本文将结合详细实例介绍动态站点静态化。
 

一. 类及其依赖库 

二. 代码实例
測试核心类 MergeTemplate.java: 
package com.wenniuwuren.velocity;import org.apache.velocity.Template;import org.apache.velocity.VelocityContext;import org.apache.velocity.app.VelocityEngine;import org.apache.velocity.runtime.RuntimeConstants;import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;import java.io.StringWriter;import java.util.Date;/** * Created by zhuyb on 16/1/12. */public class MergeTemplate {    public static void main(String[] args) {        VelocityEngine ve = new VelocityEngine();        ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");        ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());        ve.init();        // 所使用的模板名称        Template template = ve.getTemplate("template.vm");        VelocityContext vc = new VelocityContext();        // 数据        vc.put("someone", "teacher Cang");        vc.put("time", new Date().toString());        StringWriter sw = new StringWriter();        // 数据、 模板合并静态化        template.merge(vc, sw);        // IO 获取已经静态化的内容。 可进行缓存等操作        String htmlResult = sw.toString();        System.out.println(htmlResult);    }}

模板文件 template.vm :

I meet $someone on $time.
输出结果:

I meet teacher Cang on Tue Jan 12 23:39:35 CST 2016.

三. 总结
借助 velocity 作为模板, 能够方便地使数据和前端代码分离。 应用场景除了上述的动态站点静态化, 常见的应用还有生成邮件模板(发 EDM 营销邮件)。 数据和页面渲染的分离, 使得代码复用性大大提升, 同一时候在应对高并发的场景下也提供了有力支持。 突破了 Web server和 Java 处理信息的 CPU 瓶颈。

 

转载于:https://www.cnblogs.com/yutingliuyl/p/7306681.html

你可能感兴趣的文章
【Struts2学习笔记(2)】Action默认值和配置Action于result各种转发类型
查看>>
轨磁条简介
查看>>
(算法)交错的字符串
查看>>
hdu 5471(状压DP or 容斥)
查看>>
oracle.jdbc.driver.OracleDriver和oracle.jdbc.OracleDriver这两个驱动的区别
查看>>
NSQ部署
查看>>
git常用命令记录
查看>>
IBM发布新一代云计算工具包MobileFirst Foundation
查看>>
唯品会HDFS性能挑战和优化实践
查看>>
大规模学习该如何权衡得失?解读NeurIPS 2018时间检验奖获奖论文
查看>>
大厂前端高频面试问题与答案精选
查看>>
我们用5分钟写了一个跨多端项目
查看>>
Visual Studio 15.4发布,新增多平台支持
查看>>
有赞透明多级缓存解决方案(TMC)设计思路
查看>>
如何设计高扩展的在线网页制作平台
查看>>
Git 2.5增加了工作树、改进了三角工作流、性能等诸多方面
查看>>
Swift 5将强制执行内存独占访问
查看>>
中台之上(二):为什么业务架构存在20多年,技术人员还觉得它有点虚?
查看>>
深度揭秘腾讯云低功耗广域物联网LPWAN 技术及应用
查看>>
与Jeff Sutherland谈敏捷领导力
查看>>