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. Grafana+prometheus+AlertManager+钉钉机器人

    一.Grafana (1)安装Grafana的Linux环境 在官网下载windows的Grafana的压缩包到指定目录,解压缩Grafana压缩文件到包含当前Grafana版本的文件夹.将该文件夹解 ...

  2. pandas-10 pd.pivot_table()透视表功能

    pandas-10 pd.pivot_table()透视表功能 和excel一样,pandas也有一个透视表的功能,具体demo如下: import numpy as np import pandas ...

  3. js 时间常用处理方法

    众所周知,JavaScript核心包含Data()构造函数,用来创建表示时间和日期的对象. 今天主要跟大家梳理一下,常用的时间.日期处理方法,方便大家使用和理解 格式化时间 老生常谈,大概会这么写 1 ...

  4. Android开发常用开源框架:图片处理

    https://blog.csdn.net/SGQ_CSDN/article/details/79910709 Android开发常用开源框架:图片处理 框架名称 功能描述 Android Unive ...

  5. dmesg命令

    用于检测和控制内核环缓冲.程序用来助用户了解系统的启动信息 Linux命令dmesg用来显示开机信息,kernel会将开机信息存储在ring buffer中 开机信息保存在/var/log目录中名称为 ...

  6. 【转】SetWindowText 的用法

    SetWindowTextW表示设置的字符串是WCHAR (双字节字符 )SetWindowTextA表示设置的字符串是CHAR (单字节字符 )SetWindowText表示设置的字符串是自动匹配当 ...

  7. 升级openssh漏洞

    升级openssl和openssh 最近接收到客户的漏洞提醒,openssl和openssh的漏洞,解决办法就只有升级. 升级前环境 ~]# ssh -V OpenSSH_5.3p1, OpenSSL ...

  8. equals与hashCode

    当我们需要将自己的类存入HashMap或HashSet时一般都要重写其equals与hashCode方法,但在重写时要符合规范否则会出问题. 1.equals方法 首先equals方法需要满足如下几点 ...

  9. Rendering in UE4

    Intro Thinking performance. Identify the target framerate, aim your approach on hitting that target ...

  10. Caused by SSLError("Can’t connect to HTTPS URL because the SSL module is not available)

    window7系统: 今天刚安装的anaconda(开源的Python包管理器),把原来的python3和python2都给卸载了,结果运行爬虫程序的时候报错: Caused by SSLError( ...