• 各种系统性能优化技术,采用vilocity实现商品页面静态化


    1.大型门户网站系统:>10万的访问量   行业网站(当当网,卓越网):20万-30万,一个小时内会跟数据库的交互至少20万-30万,会产生数据库瓶颈,每个数据库都有一个最大连接数(socket),一般服务器连接数2000个,如果超过2000,后面连接就会处于等待,在某一时间(短暂)内,有1万人访问了该产品页面,会跟数据库发生1万次交互,在这么短时间内,数据库处理能力是有限(如只能处理2000个连接),则8000个处于等待状态,等待超时的30s内可以再处理5000个链接,还有3000个连接

    1)2000个用户很快就可以到页面

    2)5000个用户访问页面比较慢,但是还可以看到页面

    3)3000个用户提示超时,服务器可抛异常

    访问性能问题:数据库瓶颈

    解决方案:

    1)页面静态化:把一些需要访问数据库的页面,生成静态页面(html页面),以后用户访问静态页面,就不会跟数据库交互了

    2)缓存技术:因为页面静态化,只能处理一些不经常改变(更新频率很低)并且简单的网页(牵扯不到其他数据);

    有些页面不适合生成静态页面:

    a.页面缓存:在v层缓存,缓存的内容是:看到的html代码;

    缺点:不能做到实时更新,假设该产品名称是xxx,在后面办公平台改成aaa,所更改的内容只有在页面缓存过期时才会显示出来;

    优点:比二级缓存性能更高;在缓存有效期内,被缓存的内容不会发生变化,当业务需求不需要做到实时更新时,允许在某段时间内不变化;

    清除缓存:修改过内容后,确实想修改的内容显示在页面上,可通过页面缓存清除来实现;

    b.二级缓存:在m层(业务层)缓存,缓存的内容是:domain对象即实体对象

    优点:做到实时更新,该对象处于二级缓存,其某个属性变化,则缓存中的实体也会相应改变;

    我们要看到页面,首先要调用action,调完action还要调业务层,调完业务层要返回一个对象到jsp,而JSP要通过一定的表达式才显示出来,所以耗性能;

    订单系统:必须做到实时更新;

    允许少量数据库访问

    3)数据源:连接池里放一些连接对象,减少跟数据库的频繁创建连接

    如果不使用数据源:每次跟数据库打交道,每次都要跟数据库建立连接socket(client)-----socket(数据库);

    若采用数据源:在连接池里会放一些连接好的对象,程序从数据源里得到连接对象,省去建立socket连接的时间;该连接已经跟数据库建立连接了,数据库无需处理新的连接,即减轻数据库压力;

    4)SSI技术实现页面包含,会比include有一些提升;

    硬件解决方案:体现的是钱,服务器越多越好;

    2.页面静态化:

    解决方案:使用模板技术

    velocity(提供扩展支持,和el表达式相似)/freemarket

    velocity.apache.org下载velocity-1.6.jar、comments-collections-3.2.1.jar、comments-lang-2.4.jar、oro-2.0.8.jar;而不用velocity-dep-1.6.jar:包含其他三个包,为了防止jar包冲突;

    3.velocity.properties配置文件:

    指定日志文件存放位置:runtime.log=哪个盘哪个文件,一般放在项目的根路径下(右键属性→resource)注意转义;

    指定模板文件加载位置:file.resource.loader.path=在项目根路径下建vm文件夹的路径

    指定输入编码格式:input.encoding= utf-8

    指定输出编码格式:output.encoding=utf-8

    用velocity代替JSP做页面显示技术:需要指定velocity的servlet向浏览器输出内容的编码:default.contentType=text/html;charset=utf-8

    VelocityContext context = new VelocityContext();

    context.put("person","liming");//把该值带到模板上,在模板上就可以访问到该值;

    Template template = Velocity.getTemplate(".vm");:从模板目录里找到该模板,

    StringWriter writer = new StringWriter();

    template.merge(context,writer);

    创建一个模板文件放vm文件夹里后缀:.vm

    怎么根据模板生成静态文件:

  • 相关阅读:
    关于Tomcat版本的使用
    Twitter
    Thinkpad在Windows8上热键的解决方案
    关于C#中程序当前目录的小随笔
    【Network】OSPF排错及其七种状态机
    如何修改已有的ONNX模型
    安全计算环境(三)Windows服务器4
    安全计算环境(三)Linux服务器5
    安全计算环境(三)Linux服务器2
    安全计算环境(二)防火墙2
  • 原文地址:https://www.cnblogs.com/sunruntheway/p/4275524.html
Copyright © 2020-2023  润新知