zoukankan      html  css  js  c++  java
  • 怎样应对高并发 —— 动态站点静态化

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

    当然这些站点载入速度这么快。 不不过静态化。 还有 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 server和 Java 处理信息的 CPU 瓶颈。

     


  • 相关阅读:
    android数据恢复
    UVA 690 Pipeline Scheduling
    2017 国庆湖南 Day4
    2017 国庆湖南 Day5
    2017 国庆湖南 Day6
    2017国庆 清北学堂 北京综合强化班 Day1
    2017 国庆湖南Day2
    bzoj 2962 序列操作
    UVA 818 Cutting Chains
    UVA 211 The Domino Effect
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7306681.html
Copyright © 2011-2022 走看看