如何应对高并发 —— 动态网站静态化

零. 前言
为了应对高并发, 大多数网站在更新不频繁的页面都做了动态网页静态化处理。 典型的如: 淘宝的首页、 网易新闻的首页等。 当然这些网站加载速度这么快, 不仅仅是静态化, 还有 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 :

<html>
<body>

I meet $someone on $time.

</body>
</html>


输出结果:

<html>
<body>

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

</body>
</html>


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

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值