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

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

各种系统性能优化技术,采用vilocity实现商品页面静态化的更多相关文章

  1. 大型网站提速关键技术(页面静态化,memcached,MySql优化)(二)

    一:页面静态化 几个概念: 静态网址:(比如:http://localhost/abc.html) 特点:1.利用seo(search engine optimization) 搜索引擎优化;2:访问 ...

  2. 大型网站提速关键技术(页面静态化,memcached,MySql优化)(一)

    一:关键技术介绍: 衡量是否为大型网站的要素: A:PV值(page views 页面浏览量) 访问量大: 带来的问题:1:流量大 -->解决方案:增加带宽,优化程序(视频和图片较浪费带宽,尽量 ...

  3. 大型网站提速关键技术(页面静态化,memcached,MySql优化)(三)

    页面静态化的技术实现有两种方式 使用PHP自己的缓存机制 先说明一下OB缓存的机制. ob1.php 代码:说明的ob的各个用法->项目中 ☞ 如何打开ob缓存 ①     配置php.ini ...

  4. Django框架开发web网站的网页优化—页面静态化

    网站优化-页面静态化 1)概念 提前将页面所用到的数据从数据库查询出来,然后生成一个静态页面,之后用户来访问的时候,直接返回静态页面. 举例:首页静态化:获取首页用到的数据表中的数据,生成静态首页in ...

  5. 页面静态化技术Freemarker技术的介绍及使用实例.

    一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 ...

  6. 主要从架构上来做优化,负载均衡、CDN、静态化、数据库的水平切割和纵向切割、读写分离、分布式缓存着手

    语言知识一种工具,甚至技术本身也只是一种工具,本身并不值钱,关键在于用于何种行业,产生了什么价值. 但从语言来看,我个人更喜欢php,然后是C#,然后是java从框架而言,先是java,然后C#,再次 ...

  7. php页面静态化技术;学习笔记

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. java秒杀系列(2)- 页面静态化技术

    前言 通过代码片段分别介绍服务端渲染.客户端渲染.对象缓存三种方式的写法. 代码片段仅供参考,具体实现需要根据业务场景自行适配,但思想都是一样. 一.服务端渲染方式 1.接口返回html页面的设置 @ ...

  9. 页面静态化3 --- 伪静态技术之Apache的rewrite机制

      Apache的rewrite机制: 意思就是,你发送的地址,比如:http://localhost/news-id67.html会被Apache改写成http://localhost/news.p ...

随机推荐

  1. Mock、Powermock使用汇总

    背景 工作中经常用到单测,某对单测掌握的不好,所以趁此学习.总结一下. 主要参考:https://www.jianshu.com/p/0c2480b1709e.https://www.cnblogs. ...

  2. 学习笔记之DBeaver

    DBeaver Community | Free Universal Database Tool https://dbeaver.io/ Universal Database Tool Free mu ...

  3. Linux 命令:ls

    1. ls命令: list的缩写,查看目录中的文件 ls [选项] [目录名] dos 命令: dir 2. 常用参数: -a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件 -A 同- ...

  4. provide inject应用及和props对比

    之前本人写过几篇element ui源码解析,其中提到provide/inject,当时只是匆匆带过,没有做深入研究,直到后来一次开发,需要实现孙组件更改父组件的值才想起来,原来这一对属性有如此大的用 ...

  5. PL/SQL的结构

    PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用.PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL).PL/S ...

  6. 在windows上搭建hadoop开发环境

    下载hadoop: http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common 点击下面链接进行下载 然后进行解压 如果解压出现下面的情况 则用管 ...

  7. 关于base64编码Encode和Decode编码的几种方式

    关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...

  8. Codeforces Round #574 (Div. 2)题解

    比赛链接 传送门 A题 题意 \(n\)个人每个人都有自己喜欢喝的\(vechorka\)口味,现在给你\(\lceil n/2\rceil\)箱\(vechorka\),每箱有两瓶,问最多能有多少个 ...

  9. 【Beta】Scrum meeting3

    第三天:2019/6/26 前言: 第3次会议于6月26日在教9-501召开. 对每个人负责撰写的文档进行分配,并讨论其中模糊的问题,时长30min. 本日任务完成情况 成员 今日完成任务情况 成员贡 ...

  10. php curl模拟post请求的例子

    curl 在php中要模拟post请求数据提交我们会使用到curl函数,下面我来给大家举几个curl模拟post请求提交数据例子有需要的朋友可参考参考. 注意:curl函数在php中默认是不被支持的, ...