电商网站,性能优化

news/2024/5/15 10:21:40/文章来源:https://blog.csdn.net/LanSeTianKong12/article/details/46473343

电商网站,性能优化

问题:

1)当大型网站系统>10万人

一个小时内,会跟数据库交互10万次(国内有京东,淘宝),这就会出现数据库瓶颈,每个数据库最大连接数(socket)2000
在某一段短暂时间内1万人,会跟数据库发生1万次交互,2000-8000【30秒】 5000 3000
2000个用户很快就可以到页面
5000个用户访问页面比较慢
还有3000个用户会提示超时/服务器出现例外

这是访问性能的问题,原因是数据库瓶颈。

解决方案:
1>页面静态化
解决方案:使用模板技术(Velocity[9-10年]/Freemarket[5-6年])

2>2>缓存技术 (当数据更新比较快,几秒钟就更新一次,或者需要实时反映数据变化,或者页面具有很多种风格,不便于生成静态页面。如BBS)

    A.页面缓存(view,html代码)

缺点:不能做到实时更新,优点:比二级缓存效率更高。 
        在缓存的有效期内,显示的数据是没有变化的,只有当缓存过期以后才会有变化。
        页面缓存分为局部缓存和全局缓存,全局缓存是缓存整个页面的html代码,页面缓存是缓存页面中的某一块区域的html代码。
        缓存的范围:application范围(所有人都能共享,比如说产品列表显示)session(只针对某一个访问者,比如说缓存某个用户的个人信息)
        OSCache默认的范围是application范围,可以通过scope属性来修改。
        缓存默认的有效时间是3600秒,也就是一小时。可以通过time属性来修改。
        refresh属性h如果设置为true,则可以强行清楚缓存。
        key属性的作用:如果不设置key属性,就根据用户输入的url来做缓存,如果用户输入的url改变,缓存也会改变。oscatche会把所有的值放到一个map中,通过   key value来做判断。

<body>
            <oscache:cache key="aaron" scope="session" time="15" refresh="${param.refresh }">
                <div>
                    <%=new Date() %>
                </div>
            </oscache:cache>
            <br>
            当前时间:<%=new Date() %>
        </body>
        人为清除缓存<flush/>标签:
        <oscache:flush scope="application" />清除application范围内的所有缓存
        <oscache:flush scope="session" key="foobar" />清除session范围内的key为foobar的缓存
        <oscache:flush scope="application" group="currencyData" />清除application范围内组名为currencyData的所有缓存。
        使用oscache实现页面的全局缓存
        <filter>
            <filter-name>CacheFilter</filter-name>
            <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
            <init-param>
                <param-name>time</param-name>
                <param-value>7200</param-value>
            </init-param>
            <init-param>
                <param-name>scope</param-name>
                <param-value>application</param-value>
            </init-param>
        </filter>
        <filter-mapping>
                <filter-name>CacheFilter</filter-name>
                <url-pattern>/product/list/*</url-pattern>
        </filter-mapping>

  

  缓存的key将以请求的uri+查询字符窜组成,如果你访问/oscache/index.jsp?name=tt和/oscache/index.jsp?name=ppp将得到两分缓存。
        缓存在初次访问页面时进行,后续的请求将会返回缓存中的内容。缓存中存放的内容为页面返回给用户的html代码。
        OSCache配置属性介绍
        cache.memory=true指定是否使用内存缓存,配置默认为true,即使用内存缓存。
        cache.capacity=1000指定缓存的容量,默认的容量是无限的,我们可以为他设置缓存数量。
        如果要使用硬盘缓存,我们可以这样设置:
        cache.memory=false
        cache.path=d:\\cache(指定缓存保存的路径,注意:路径应该采用双\\符号)
        cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener
        cache.persistence.class用于设计持久化类
        我们既要考虑页面的数量,也要考虑机器的内存,如果内存不多的话容易引起内存耗尽,系统的性能反而下降。
        但是最好还是用内存缓存,因为速度比较快,一般服务器的内存都大于10g,用于缓存产品列表页面够了。因为产品列表页面不会太多,假设我们有几万个的话,有一两个g就够了。
        CacheFilter的实现原理:

 

复制代码
 1 CacheFilter{
 2 doFilter(request,response,chain){
 3 String urlpath=req....;
 4 if(oscache.contains(urlpath)){
 5 String content=OsCache.getKey(urlpath);
 6 response.write(content);
 7 }else{
 8 CacheHttpServletResponseWrapper wrapper=new CacheHttpServletResponseWrapper(response)
 9 chain.doFilter(request,wrapper);
10 String content=wrapper.getContent();//获取服务器网客户端输出的html代码
11 OScache.put(urlpath,content);
12 response.write(content);
13 }
14 }
15 
16 public CacheHttpServletResponseWrapper entends HttpServletResponseWrapper{
17 private String content;
18 public CacheHttpServletResponseWrapper(HttpServletResponse response){
19 ....
20 }
21 public void write(String content){
22 this.content=content;
23 }
24 public String getContent(){
25 return content;
26 }
27 }
28 }
复制代码


        页面缓存比二级缓存快的原因:当请求来之后系统就会交给过滤器,过滤器得到路径以后就会把缓存返回给客户端。
        二级缓存要经过action service 和jsp
    B.二级缓存(model/业务层,domain对象)优点:实时更新
    EHCache OSCache jbossCache(分布式缓存)
    第一步:导入ehcache的ehcache.jar文件(hibernate中有)
    第二部:在persistence.xml文件中添加下面配置项: 

View Code

 第三步:在实体类上面标注@Cache(region="cn.aaron.bean.Person",usage=CacheConcurrencyStrategy.READ_WRITE)
    第四步:在classpath下面放入ehcache.xml,内容模板如下: 

 

View Code

  注意<cache>节点中的name属性要和@Cache(region="cn.aaron.bean.Person",usage=CacheConcurrencyStrategy.READ_WRITE)中的region相同
    ehcache.xml文件中各项属性说明如下:
        defaultCache节点为缺省的缓存策略
        maxElementsInMemory 内存中最大允许的对象数量
        eternal 设置缓存中的对象是否永远不过期
        overflowToDisk 把溢出的对象放到硬盘上(对于本例而言,第1001个对象将存放在硬盘上)
        timeToIdleSeconds 指定缓存对象空闲多长时间会过期,过期的对象会被清除掉
        timeToLiveSeconds 指定缓存对象总的存活时间
        diskPersistent 当jvm结束时是否持久化对象
        diskExpiryThreadIntervalSeconds 指定专门用于清除过期对象的监听线程的轮询时间
    
3>数据源 连接池里面放一些连接对象
每次都能跟数据库建立连接socket(client)----socket(数据库)

4>SSI 对性能提升不是那么明显(有一点点作用)
Server Side Include, 通常称为“服务器端包含”技术。
使用了SSI技术的文件默认的后缀名为.shtml,SSI技术通过在html文件中加入SSI指令让web服务器在输出标准HTML代码之前先解释SSI指令,
并把解释完成后的输出结果和HTML代码一起返回给客户端。
在大部分项目中,我们主要使用了SSI的包含指令<!-#include virtual="global/foot.jsp"-->,
他的作用类似于JSP中的<jsp:include page="/global/foot.jsp"/>标签。
使用SSI主要有如下两点优势:
1 SSI技术是通用技术,它不受限于运行环境,在java,.net,CGI,ASP,PHP下都可以使用SSI技术
2 解释SSI指令的效率比解释JSP的效率快很多,因为Servlet规范提供了太多的功能,这些功能都需要servlet引擎进行解释,所以效率比较低。
在目前,大部分的门户网站都是用SSI技术,解释SSI文件最佳的服务器是Apache HTTP Server。
大型门户网站基本都使用这个来解释SSI文件。
配置实用SSI
目前主流的web服务器都提供SSI实现,我们只需要打开SSI功能就可以使用。
tomcat也可以,但是并不会提高性能,因为使用的还是servlet引擎 .

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_801923.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java下的大型网站对图片的下载,存放,及压缩管理

大型网站对图片的下载&#xff0c;存放&#xff0c;及压缩管理 构建保存图片的路径&#xff1a; 1 String pathdir "/images/product/" productTypeId "/" productId "/prototype";//构建文件保存的目录 为什么要有那么多个目录&#xff0c;因…

网站制作的切图技巧

一般的网站制作步骤大体上为&#xff1a;设计效果图–》切图制作静态html模板–》嵌套至CMS&#xff0c;其中&#xff0c;切图虽然是很简单的一个步骤&#xff0c;但其中也有很多技巧&#xff0c;以下是我个人总结出来的几点。 总体上&#xff0c;把握一个原则&#xff0c;能用…

计算机组成原理与jsp总分,基于JSP的计算机组成原理教学网站的设计与开发

随着互联网技术不断的发展和成熟,开展远程教学,开发整体教学系统成为计算机发展的一个全新课题。这种方式打破了时间、空间的限制,有效地实现了教学资源和教学方法的共享、教学过程的交互性、教学内容快速的更新、教学媒体的充分利用。介绍了该教学系统的设计意图及工作原理,论…

Centos6.0下安装mono 4.0和Jexus 5.6.4,并配置运行网站

很多朋友想要在Linux下部署asp.net的网站&#xff0c;但是又苦于不懂配置环境。今天&#xff0c;我在这里给大家讲解一下如何在Centos 7.0下安装最新版的mono 4.0.0 Jexus 5.6.4&#xff0c;并配置运行网站。 首先用ssh连接linux机器&#xff0c;登录root账号。在这里直接用我…

oracle10g 是rac,dbca建库-RAC安装完成 - Oracle10.2.0.4-RAC两节点集群环境搭建_数据库技术_Linux公社-Linux系统门户网站...

Oracle用户下,dbca启动界面&#xff0c;来创建数据库实例&#xff1a;选择节点&#xff1a;配置ORACLE_SID选择ASM存储(ASM磁盘之前已经创建)换成pfile这里提示没有监听&#xff0c;选Yes&#xff0c;会自动配置监听/oracle/product/10.2.0/crs_1/log/dbcc1/crsd/crsd.log日志信…

网站用户单点登录系统解决方案

1 背景 在网站建设的过程中&#xff0c;多个应用系统一般是在不同的时期开发完成的。各应用系统由于功能侧重、设计方法和开发技术有所不同&#xff0c;也就形成了各自独立的用户库和用户认证体系。随着网站的发展&#xff0c;会出现这样的用户群体&#xff1a;以其中的一个用户…

CTFHub-备份文件下载 - 网站源码

上面一些是网页源码文件后缀&#xff0c;下面的是文件名&#xff0c;用他它们排列组合&#xff0c;最终www.zip有文件下载 但三个文件里都没有flag&#xff0c;其中flag文件的文件名有点奇怪&#xff0c;输入到网页上

bugku-网站被黑

网站和网页源代码都没有东西&#xff0c;根据题目提示&#xff0c;应该要扫描一下目录 用AppScan没扫出来 再用御剑扫描试试 第一个是题目的页面&#xff0c;第二个就是后门页面 用字典没爆出来&#xff0c;查了wp是hack&#xff0c;说要用shell专用字典

【ASP.NET 问题】IIS发布网站后出现 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误的解决办法...

新装IIS&#xff0c;然后发布网站&#xff0c;运行出现如下错误提示 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler” 于是去网上找资料&#xff0c;轻松搞定。o(∩_∩)o 哈哈 原因: vs2010默认的是4.0框架&#xff0c;4.0的…

【ASP.NET 问题】IIS发布网站后出现“检测到在集成的托管管道模式下不适用的ASP.NET设置”的解决办法...

系统环境:win7 asp.net4.0网站挂到本地IIS上报错: google一下,发现N页解决方案,但是点进去一看前篇一律的解决方法是.将IIS7 下网站托管管道由继承模式修改为经典模式,这其实是治标不治本,iis7在经典模式下和iis6没有什么两样. 但是你修改以后也许真跑起来了,但是也有可能接着出…

【温故而知新-CSS】使用CSS设计网站导航栏

1.实现背景变换的导航菜单效果预览&#xff1a; 首页公司频道最新动态客房介绍酒店服务休闲娱乐旅行社源代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"…

【读书笔记《Bootstrap 实战》】4.企业网站

上一章有对个人作品站点进行一些优化。本章&#xff0c;轮到我们充实这个作品站点了&#xff0c;补充一些项目&#xff0c;从而展示我们的能力。换句话说&#xff0c;我们要构建一个相对复杂的企业网站主页。 下面有几个成功企业的网站&#xff1a; □ Zappos (http://www.zapp…

【读书笔记《Bootstrap 实战》】5.电子商务网站

构建了公司网站之后&#xff0c;接下来就可以考虑设计一个在线商店了。 此次的设计以上一章的设计为基础&#xff0c; 只是添加了一个包含如下元素的新页面&#xff1a; □ 包含商品小图、标题和说明的产品网格&#xff1b; □ 位于左侧的变懒&#xff0c;用于按类别、品牌等筛…

【读书笔记《Bootstrap 实战》】6.单页营销网站

我们已经掌握了很多实用 Bootstrap 的重要技能。现在&#xff0c;是时候拿出更多的创意来帮助客户实现他们全方位在线营销的愿望了。此次将带领大家做一个漂亮的单页高端营销网站。 主要任务如下&#xff1a; □ 一个大型介绍性传送带图片展示区&#xff0c;配有自定义的响应式…

【CSS Demo】网站页面变灰

让网站所有元素变成灰色调&#xff0c;全浏览器支持&#xff0c;使用了滤镜&#xff0c;比较吃性能&#xff0c;建议作临时方案使用。 实现效果&#xff08;点击下面的按钮&#xff09;&#xff1a; 这里放一张图片作为效果展示&#xff1a; 其CSS代码如下&#xff1a; body{-w…

IIS 网站 HTTP 转 HTTPS

最近需要做 http 链接转成 https 链接&#xff0c;所以就去弄了&#xff0c;现在记录下&#xff1a; 1.准备SSL证书 最开始的时候用的是腾讯云的免费证书&#xff0c;有效期1年&#xff0c;但只能绑定一个二级域名。测试成功后&#xff0c;就去阿里云购买了证书。 参考链接&…

课后作业:模拟婚礼网站用户名的输入框 模拟京东关闭广告 模拟下拉菜单 实现开关灯

模拟婚礼网站用户名的输入框 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>div {width: 250px;color: #6db8ff;border: #555555 solid 1px;margin: 1px auto;}in…

js 两个值得推荐的网页插件网站

插件使用方法: 点击进入 一. 轮播图插件 链接:https://www.swiper.com.cn 这个网站有各种各样的轮播图效果,种类繁多的程度出乎你的想象,下面列出几个 二. tab栏,焦点图,图片无缝滚动 链接:http://www.superslide2.com/

当网站遭遇DDOS攻击的解决方案及展望

当网站遭遇DDOS攻击的解决方案及展望一、事件发生春节长假刚过完&#xff0c;WEB就出现故障&#xff0c;下午1点吃完回来&#xff0c;立即将桌面解锁并习惯性的检查了Web服务器。通过Web服务器性能监视软件图像显示的向下滑行的红色曲线看到WEB出现问题了。根据上述的问题&…

java+mysql+tomcat MVC框架网站搭建

所有源码都在github上&#xff08;https://github.com/seasonyao/24languages-words-meanings-web&#xff09; 1.配置介绍&#xff1a; Windows8环境下Java&#xff08;1.8.0_121&#xff09;mysqltomcat8.5.24 用的软件intellij idea2017和navicat premium 2.需求 为以上2…