构架高性能WEB网站的几点知识

news/2024/5/16 10:33:36/文章来源:https://blog.csdn.net/weixin_33795093/article/details/86068073

前言:

对于构架高性能的web网站大家都很感兴趣,本文从几点粗谈高性能web网站需要考虑的问题。

 

HTML静态化

什么是html静态化?

说得简单点,就是把所有不是.htm或者.html的页面改为.htm或者.html

1.纯静态页面

当用户访问是,不需要经过服务器解析,直接就可以传送到客户端,此类型的页面,由于不需要解析就能直接访问,一般情况下,比动态页面的执行速度快。

2.静态化

页面静态化就是用动静结合的方式将动态网站生成静态网站来保存。这是实实在在的html文件,也就是静态页面。

3. 伪静态方法(Url静态化)

伪静态不是真正意义上的静态化,它只是利用某种方法将访问的路径也就是url地址转换成为.html为后缀的文件,但是实际上,文件本身还是以原来的后缀保存在服务器上。

HTML静态化的优点

一、减轻服务器负担。
二、有利于搜索引擎优化seo,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全;
三、加快页面打开速度,静态页面无需连接数据库打开速度较动态页面有明显提高;
四、HTML页面不会受程序相关漏洞的影响

PHP中的html静态化的模版

著名的smarty模版就是一个实现很好的html静态化的模版,smarty的优点就是速度快,高效缓存和html静态化,模版分离

MVC开发模式

 

MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

视图

  视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.

  如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

模型

  模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

控制器

  控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

MVC优点:

低耦合

高度重用性

高效部署,降低开发周期

可维护性

有理软件工程化管理

PHP中比较好的MVC框架:

Zend framework PHP官方框架

ThinkPHP 国产框架

yii 高效的次轻量级框架

…………

 

图片服务器分离

 

原因分析:对于一个非视频类的网站,图片一般是最消耗资源的, 这个时候应该考虑图片与页面分离,也就是独立的图片服务器.LAMP网站架构方案分析

上面是经典的LAMP架构图,在LAMP架构中,当流量很大到时候,apache服务器的缺点就暴露出来,

可以采用nginx来负载非PHP的Web请求,使用nginx这种高性能的HTTP和反向代理服务器作为静态资源的独立服务器,保证系统的消耗和执行效率。

缓存技术

image

LAMP缓存图

从图中我们可以看到网站缓存主要分为五部分

  1. 服务器缓存:主要是基于web反向代理的静态服务器nginx和squid,还有apache2的mod_proxy和mod_cache模块
  2. 浏览器缓存:包括页面html缓存和图片js,css等资源的缓存
  3. PHP缓存:有很多免费的PHP缓冲加速工具,如apc ,eaccerlertor等
  4. 内存缓存:主要是采用memcached这种分布式缓存机制
  5. 数据库缓存:通过配置数据库缓存,以及数据存储过程,连接池技术等

缓存黄金原则:让数据更靠近 CPU。缓存黄金原则系支付宝冯大辉:http://www.dbanotes.net/arch/youku_arch.html

CPU-->CPU 一级缓存-->二级缓存-->内存-->硬盘-->LAN-->WAN
关于这个缓存黄金原则有争议,大家可以参考一下:

驳:《缓存黄金原则:让数据更靠近CPU》

各位仁者见仁智者见智吧,本人能力有限,对此不做评论。

数据库集群和库表散列等等

这点本人没有涉猎可以参考优酷网架构中的数据库处理方法http://www.itivy.com/ivy/archive/2011/8/13/the-architecture-of-youku.html

 

负载均衡

负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。

优点

        (1)解决网络拥塞问题,就近提供服务,实现地理位置无关性;

  (2)为用户提供更好的访问质量;

  (3)提高服务器响应速度;

  (4)提高服务器及其他资源的利用效率。

PHP中web server解决方案

对于PHP的webserver的负载均衡,

  • apache的均衡策略

ProxyPass 指令

说明
将一个远端服务器映射到本地服务器的URL空间中

语法
ProxyPass [path] !|url [key=value key=value ...]]

作用域
server config, virtual host, directory

模块
mod_proxy

该指令允许你将一个远端服务器映射到本地服务器的URL空间中,此时本地服务器并不充当代理角色,而是充当远程服务器的一个镜像。path是一个本地虚拟路径名,url是一个指向远程服务器的部分URL,并且不允许包含查询字符串。

当使用ProxyPass指令时,ProxyRequests指令通常应当被设为 off

假设本地服务器地址是:http://example.com/,那么,

ProxyPass /mirror/foo/ http://backend.example.com/

将会导致对http://example.com/mirror/foo/bar的本地请求将会在内部转换为一个代理请求:http://backend.example.com/bar

更详细的说明可以参看:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

apache的三种均衡负载策略:http://s456123123b.blog.163.com/blog/static/5632332220101080474642/

  • nginx的负载均衡

HTTP Upstream 模块,该模块为后端服务器提供简单的负载均衡(轮循调度和客户端 IP)。

示例:

upstream backend  {server backend1.example.com weight=5;server backend2.example.com:8080;server unix:/tmp/backend3;
}   server {location / {proxy_pass  http://backend;}
}
 
官方资料:http://wiki.nginx.org/NginxChsHttpUpstreamModule

张宴的博客实例:http://blog.s135.com/post/306/

前端页面优化

前端优化原则

· 带宽

o 使用CDN

o 压缩jscss,图片优化

· HTTP优化

o 减少转向

o 减少请求数

o 缓存

o 尽早Flush

o 使用gzip

o 减少cookie

o 使用GET

· DNS优化

o 减少域名解析时间

o 增多域名提高并发

· JavaScript

o 放页面底部

o defer/async

· CSS

o 放页面头部

o 避免@import

· 其它

o 预加载

-----------------------------------------------------------------------------------------------------------

总结:

前端优化----HTML静态化-----PHP框架(MVC思想)----数据库集群和库表------图片服务器分离----负载均衡

外加一个:一个贯穿始终的缓存技术,方法都是基础方法,但是如何让他们达到高聚合低耦合的状态就有不简单了。

Technorati 标签: 高性能 构架 优酷构架 服务器 nginx apache

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

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

相关文章

网站建设Linux下安装PHP Memcache扩展

2019独角兽企业重金招聘Python工程师标准>>> 这里用的是第一个 网站建设(memcache),安装过程如下: 环境: CenOS5.2已经安装好了php5.2.13(在/usr/local/php). 1. 下载解压缩 从http://pecl.php.net/get/…

大型分布式网站架构实战项目分析

一、分布式系统是什么? 1、定义 distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing messages(分布式系统是指位于网络计算机的组件仅通过传递消息来通信和协调其…

编程学习网站

2019独角兽企业重金招聘Python工程师标准>>> http://phpmaster.com/ php学习网站 http://www.sitepoint.com/ 综合编程学习网站 http://www.jcwcn.com/article-16881-1.html php设计模式学习 转载于:https://my.oschina.net/lilugirl2005/blog/100367

企业选择WordPress建站的理由

2019独角兽企业重金招聘Python工程师标准>>> 作为一个企业,在建站的时候为什么会选择WordPress呢?我们来简单说下。 1、开源力量 WordPress是开源软件,有着众多的技术员、使用者来反馈,这样保持着WordPress拥有着最新鲜…

LAMP架构的网站

LAMP架构的网站2003年4月7日,马云在杭州成立了一个神秘的组织。他叫来十位员工,要他们签了一份协议,这份协议要求他们立刻离开阿里巴巴集团,去做一个神秘的项目。这个项目要求绝对保密,老马戏称“连说梦话被老婆听到都…

为什么百度显示“网站标题”是错误的?

对于SEO而言,在日常工作中,我们经常会在百度中检索“网页标题”的排名情况,但偶尔也会遇到一些特殊情况,比如:在百度搜索结果中显示的网页标题是错误的,甚至是不相关的,这让SEO新人感到很困惑。…

WIN8 安装IIS及本地网站

2019独角兽企业重金招聘Python工程师标准>>> 首先,安装IIS: 安装结束之后,进入管理工具打开IIS管理器 如果能看到下面的页面,说明IIS已经安装完成。 到此开始发布本地网站,打开IIS管理器,具体操…

网站导航颜色停留_如何才能够让网站风格保持一致?

建设一个网站时,网站的内页有必要和首页的风格一致,这样才显出网站是一个整体。布局井然有序,主页面、子页面有章可循,配色方案自成体系,交互方式统一协调,与内容深度联系—这就是一致性。建网站建设方法主…

Java精品项目--第2期基于SpringBoot的健身系统+健身网站

技术栈 Spring BootMavenMySQLMyBtis-PlusShiroJavaScriptJQueryAjaxBootStrap支付宝沙箱支付 功能设计 网站部分 首页健身商城新闻活动联系我们关于我们个人中心后台管理系统 仪表盘器材管理课程管理订单管理余额充值留言管理教练管理活动管理系统日历 效果展示 部分代码 R…

Windows Azure 免费初体验 - 创建部署网站

前几天在看到有个学Windows Azure课程,送Windows Azure的活动,课程地址:http://www.microsoftvirtualacademy.com/ 在活得体验资格后,就迫不及待的捣鼓了下。在这里就介绍一下如何将自己的网站部署到Windows Azure上。 首先介绍下…

干货!手把手教你打造自己的seo生态资源,让排名不在是梦想...

又到了分享经验的时刻,每到这时候,高粱seo心里总是美滋滋的,因为分享是一种快乐,更是一种收获,能够与人分享,本身就是一种成功。在上一篇文章当中,高粱seo用两个实战案例,证明了目前…

用CheOps,助力1分钟建站

近日,八戒技术团队正式发布了其自研的轻量级开发测试云平台CheOps(一款面向云原生的DevOps平台),并开启限时免费预约活动。 项目负责人表示,CheOps经过八戒技术团队多年技术实践验证,产品稳定可靠&#xff…

10 个学习iOS开发的最佳网站(转)

10 个学习iOS开发的最佳网站 作者 jopen 2012-09-26 08:59:56 1) Apple Learning Objective C Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统&#xff…

在IIS中使用SSL配置HTTPS网站

在IIS中使用SSL配置HTTPS网站由于Windows系统的普及,很多中小企业在自己的网站和内部办公管理系统都是用默认的IIS来做WEB服务器使用。 默认情况下我们所使用的HTTP协议是没有任何加密措施的,所有的消息全部都是以明文形式在网络上传送的,…

在ionic应用中打开外部网站(使用InAppBrowser插件)

2019独角兽企业重金招聘Python工程师标准>>> 在安卓上试了一下,如果直接window.open(url), 在app中点击外部链接没有任何反应。 安装https://github.com/apache/cordova-plugin-inappbrowser 执行命令: ionic plugin add cordova…

用CSS开启硬件加速来提高网站性能

国外一篇文章,有点意思,转载过来,准备尝试下~ 中文地址:http://www.cnblogs.com/rubylouvre/p/3471490.html 原文地址:http://blog.teamtreehouse.com/increase-your-sites-performance-with-hardware-accelerated-css…

网站伸缩性架构--数据存储服务器集群的伸缩性设计

1.分布式缓存的伸缩性设计 1.1Memcached分布式缓存集群的访问模型 1.2分布式缓存的一致性Hash算法 2.数据库存储服务器集群的伸缩性设计 数据库存储服务器集群的伸缩性设计对数据的持久性和可用性提出了更高的要求。数据存储服务器必须保证数据的可靠存储,任何情况下…

python爬取网站美女图片

今天周五,项目刚刚上线完,有些时间,闲着无聊,继续复习爬虫,这次打算爬取网站的美女图片。得先找到目标,然后目标网站还不会反爬虫,因为自己只是小白,好了开始。寻找目标,…

微软企业库5.0 学习之路——第四步、使用缓存提高网站的性能(EntLib Caching)

首先先补习下企业库的Caching Application Block的相关知识: 1、四大缓存方式,在Caching Application Block中,主要提供以下四种保存缓存数据的途径,分别是:内存存储(默认)、独立存储&#xff0…

零碎笔记:浏览器访问一个网站所经历的步骤

浏览器访问一个网站所经历的步骤 Chrome搜索自身的DNS缓存搜索操作系统自身的DNS缓存(浏览器没有找到缓存或缓存已经失效)查看Chrome浏览器的DNS缓存信息(chrome://net-internals/#dns):读取本地HOST文件 浏览器发起一个DNS的一个系统调用 宽…