实际网站2.0 网站性能调优
Web2.0 网站比传统网站面临更多的性能问题。 51CTO之前的视频主题“大型网站架构技术专家”讲解了如何正确设计网站架构。明天这篇文章会告诉你如何优化Web2.0个站点的性能。
Web2.0 网站不同于往年静态信息的网站结构。前几年的架构大致分为两层,一层是客户端浏览器,一层是web服务器;而Web2.@ >0主要是动态交互的,一般是3、4层。前端的web服务器在静态信息网站的结构上会减少应用服务器和数据库。通常将浏览器和Web服务器归为顶层,即Web层,应用服务器为中间层,数据库为第一层。从优化的角度来看,优化的层次越低,收益越大,优化也是自上而下的。
网页层优化:
1、DNS 解析时间
这个时间是在用户第一次访问网站时形成的。解决时间会影响用户的访问体验。因此,如果您希望网站快速响应,就一定不能导致 DNS 解析出现问题。此外,DNS 的 TTL 时间也需要深入研究。 IE的DNS过期时间是30分钟,TTL可以设置的比这个长一点。此外,在 Web 服务器上使用 keep-live 也会减少 DNS 查询次数。
2、减少浏览器发起的请求数,尽量减少浏览器发起的请求数,也就是说,尽量让浏览器缓存任何可以缓存的东西。这样,用户访问一次后,第二次访问可能会导致发起的请求数接近1或等于1,如果是静态页面,则可能为0。方式包括:
1)将所有样式表文件合并为一个
2)将所有js文件合并为一个
3)图片可以尽量合成。这与上一个不同。如今,他们中的大多数使用adsl上网。相反,大量的零碎图片会影响速度。
4)页面布局和样式页面使用xhtml和div+css布局,并将样式表与xhtml文件分开,一个可以增加xhtml文件的大小,一个可以缓存样式表文件。处理。这里还有一个ui设计原则。 ui与系统结构相同。越简单越好,整体页面代码会更少,速度也会更好。
5)文件文件也应该放在html文件之外,原因同上。
3、静态文件优化
1)目前大部分浏览器都支持gzip压缩文件,所以压缩文本、静态页面、样式表、文件等可以压缩的文件可以减少内容获取时间。尺寸为原始尺寸的 10-30%。这是在网络服务器上设置的,我使用的设置是:
- server.modules = (
- ….
- "mod_compress",
- …
- )
- compress.cache-dir="/usr/local/lighttpd/cache"
- compress.filetype = ("text/plain", "text/html", "text/css", "text/javascript")
2)还可以在静态文件服务器上减少squid等缓存服务器,进一步提高客户端的访问性能。如果财力雄厚,也可以使用一些商业的CDN加速服务。
4、应用笔记
应用要注意要限制的应用域和应用目录以及过期时间。否则,如果用户第一次访问,即使是很小的静态图片也可能会发送到服务器,从而减少了通信负载。除了限制大小,一个3k可以将延迟降低到80ms。
提高页面速度页面只由2-4个不同域名的服务器提供服务以提高速度,美国的研究也证明了这一点。比如提供主html文件,提供样式表,提供图片,这样浏览器就可以同时从多个服务器下载文件,可以提高速度。并且 *** 不超过 4 个。
5、样式表文件位置
将样式表文件放在页面上,以便首先阅读。因为ie中的样式表有问题,如果没有加载样式表,会影响之前html内容页面的显示,所以即使浏览器中已经有html文件,页面依然无法显示.
移动到 html 文件的末尾 移动到 html 文件的末尾。为什么要这样做,因为处理过程会阻塞上一页的显示,也会导致http请求被阻塞。作者的网站上有这样一个案例。网站上有一个合作伙伴。结果每次访问页面都感觉页面卡顿,用户体验很差。显示在原来的位置网站优化,一下子就好了。
6、 尽量避免301、302等跳转,必要时在301、302页面添加过期头。笔者原来单点登录需要跳转,后来改进不跳转,整体速度效果下降。
7、删除重复脚本 要删除重复脚本,IE 会针对重复脚本发起重复的 http 请求。大多数网站在运行一段时间后可能会发生这种情况。在作者的网站上经常有营销人员添加的重复广告脚本。
8、AJAX内容AJAX内容也可以缓存,也可以异步压缩缓存调用xml、json等数据。
9、限制爬虫,限制爬虫。一些国外的爬虫很厉害,不违规。他们经常对瘫痪网站的强大爬虫风暴做出反应。如何限制爬虫?你只能在web服务器上工作,服务器仍然可以限制它。作者限制10个并发配置如下:
.max-conns-per-ip=10
web层优化的目的是充分利用浏览器的缓存特性,达到接近本地的访问率。右图是作者访问首页的效果对比:
上一列的数据是文件大小和空缓存需要下载的http请求数。前面是真正的带缓存的访问,效果非常显着。 HTTP 请求减少了 95%,内容缓存了 82%。
应用层优化:
应用服务器优化,php可以使用一些优化方法如Zend、等,Java可以使用一些高性能的jdk、应用服务器、优化jdk参数等;
使用,和版本控制服务器中的版本号一样,每次更新后的ETag都不一样,浏览器处理类似于版本服务器的客户端,先发送版本号给服务器请求。 ETag 处理过程从 Web 服务器在响应的 http 头中发送 ETag 开始,例如:
ETag:"1"
Last-:Thu,:20:18GMT
如果浏览器再次请求该页面,它会发送一个类似于以下的标头:
如果没有匹配:“1”
如果--Since:Thu,:20:18GMT
此时如果页面没有变化,web服务器会响应一个304 ,但是不需要将页面内容附加到浏览器(即不需要动态生成)页面内容),大大减少了服务器的处理和网络通信负载。
#T#同步到异步同步到异步,在Web2.0网站中往往有很复杂的处理。比如用户注册也需要发送短信等操作,有时可能还有其他处理。 ,使用户等待时间长,容易出错。在这种情况下,将其他处理异步化,以便页面尽快直接响应用户。作者的一个数据上传程序也处理同样的过程。对于大量数据,上传时间可能在1-2秒,处理时间可能接近10秒(需要在数据库中进行上千次的插入操作),而在应用服务器容器中的处理时间更长笔者后来改成异步处理后,用户满意度大幅提升。
使用缓存,或者缓存,如果可能的话尽量使用缓存,虽然现在显存很便宜,但用空间换取时间效率应该是很实惠的。特别是对于那些持续时间长网站优化,需要建立网络链接的,方法:使用数据库的缓存或普通数据;使用数据库缓冲池减少建立数据库连接的时间
使用 gzip 压缩动态页面 如果可能,您还可以使用 gzip 压缩动态页面。如果服务器多,CPU负载不高,可以考虑减少动态页面的gzip压缩功能。
集群处理,当访问压力大时,对应用服务器使用集群处理。
应用服务器的优化主要是减少程序处理时间,提高运行效率。
数据库优化的议程与具体的数据库密切相关,议程也比较广泛。笔者只简单列举:
设置专门的DBA,负责数据库的安装和优化;优化 SQL,使用数据库集群和复制功能分担数据库压力。
其他优化措施网站的优化涉及很多方面,其他方面还包括网站结构、操作系统、服务器硬件、网络设备、ISP机房网络等方面的优化。
工具作者使用的工具都是插件,所以必备: