原文 巧妙使用Firebug插件,快速监控网站打开缓慢的原因

很多用户会问,我的网站首页才50KB,打开网页用了近60秒才打开?如何解释?
  用户抱怨服务器运行缓慢,w3wp.exe 出现 CPU 100%,每个网管都可能遇到?!是用户自己 ASP / PHP 程序设计有问题,还是服务器是问题,还是电信、网通、铁通互相访问太慢。经常是各说各有理,也扯不清,道不明,往往是以客户流失,更换空间商而结束,最后空间商与用户都是输家。
  我的网站首页才50KB,打开网页用了近60秒才打开?
  这个问题很难解释清楚,可能越解释越复杂,面对专业术语,客户以为你在推卸责任(秀才遇到兵有理说不清?)。
  因为客户根本不想听你解释,只想让网站访问更“快”。如何加快访问?让客户随时自己能“监控”到网站的状态,实时“看到”网站的状态?

首先,我们看看自己电脑与服务器之间的速度
  我们先下载一个Mozilla Firefox浏览器(火狐浏览器),下载地址 http://www.mozillaonline.com 然后再下载一个名叫Firebug的“Firefox 附加组件扩展”,下载地址 https://addons.mozilla.org/zh-CN/firefox/addon/1843/ 。

  安装Firebug浏览器插件后,在火狐浏览器的“工具”菜单里打开Firebug插件。


  同时在Firebug插件的“网络”菜单里选择“禁用浏览器缓存”的选项。
  假设我们访问 http://www.sina.com.cn 新浪网站,看到了吗,我们打开这个网站后,同时也打开了很多的Flash动画 SWF、 JPG、JS|、CSS文件,每个文件的下载时间、文件大小、传输速度都可以看到。

  
  这里的速度显示了你与服务器之间的速度,以及下载网页所需要的时间。如果JPG图片、SWF动画很大,需要很多的时间“下载”,自然打开网站就慢了。

  理论上,网页越简洁,打开速度越快。像 http://www.google.com  http://www.baidu.com 等网站,只有一些文字,几乎没有什么图片,打开速度就非常快,基本是“一闪就打开”。
  Firebug 显示了自己电脑与服务器之间的网络传输速度。受(1)是否开启GZIP压缩(2)ADSL的速度(3)服务器带宽(4)是否网间访问,如电信ADSL访问网通服务器网站等因素的影响。理论上ADSL速度越快,服务器带宽越高,那么互相访问的速度就越快。两者缺一不可。

其次,服务器上的ASP、PHP程序文件执行时间怎么监控呢?
  刚才通过Firebug显示的速度是网络传输速度和时间,但是无法直接看到服务器里ASP文件执行的时间,即无法看到这个ASP程序执行了多少时间,怎么找出有死循环的ASP页面?
  服务器CPU运算速度怎么看呢?有一个简单的办法,就是上传一个ASP论坛,比如动网ASP论坛,论坛的每个页面下面都有一个脚本执行时间。这个反应了每次打开ASP页面,服务器脚本执行的时间。可以简单看出服务器的运算速度。如果这个时间很小,一般零点零几秒,服务器执行速度很快,可以排除服务器自身问题。
    对于其他ASP网站,没有动网论坛这样的显示脚本执行时间功能,怎么办呢?我们可以在 http://www.zcnt.com 下载一个《智创网站专业级防火墙》通过防火墙的“IIS运行监控”功能可以监控到IIS里的ASP文件执行时间和情况。如下图所示,可以非常直观的看到网站脚本执行情况。代码有死循环、或执行超时可以监控到,对于排查服务器 w3wp.exe 出现 CPU 100%非常有帮助。

开启gzip网页压缩,让网页传输的更快,让客户“一闪就打开”网页。
  我们先来看看什么是gzip压缩,有什么特色?
  如图所示,我们通过第三方的gzip在线检查工具(网址 http://tool.chinaz.com/Gzips/ ),看到  http://www.phpwind.net/read-htm-tid-1187375.html 的页面进过 gzip压缩后从 220K减少到了48K左右。压缩率近78 %。

  开启gzip压缩功能,只需点几次鼠标,成本为零。而且是IIS自带的功能,稳定可靠。比更换为更高级的服务器带来的效果还好。对于国外的空间,国际带宽小,比如3M、5M、10M的国际带宽,开启gzip压缩能可以大大减少传输网页需要带宽。
  这个主要对 HTML、ASP、PHP、NET、CSS、JS等文本网页效果有显著提升。其他 JPG图片、Flash动画等可能已经压缩的了,不需要使用gzip压缩。
  浏览器一般会缓存HTML网页、JPG图片、SWF动画等静态文件,从第二次开始,如果服务器的HTML、JGP、SWF等静态文件没有修改,则直接读取本地浏览器缓存里的文件,而不会从服务器下载,无形中提高访问速度。
  ASP、PHP、NET等程序网页不会被浏览器缓存,仍然会每次从服务器“下载”,所以 gzip压缩就非常关键了,这就是为什么Discuz、PHPWind等论坛推荐开启gzip压缩。开启gzip压缩后,访问Discuz、PHPWind等论坛速度会非 常快。

我们在回头看看,我们访问一个网站会经过哪些步骤?

注:这里主要是讨论服务器环节,其他环节,如类似域名解析速度,减少网页图片数量等不在本文讨论范围之内。本文主要讨论一些关键的因素。

巧妙使用Firebug插件,快速监控网站打开缓慢的原因的更多相关文章

  1. ThinkPHP框架快速开发网站

    使用ThinkPHP框架快速搭建网站 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.如果对于同样是Web方面新手的你有一丝丝帮助 ...

  2. (视频)《快速创建网站》 4.2 完结篇 – 应用运营vs.发射卫星,遥测(Telemetry) 技术

    本文是<快速创建网站>系列的第10篇(完结篇),如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文.访问本系列目录,请点击:http://devopshub.c ...

  3. (视频)《快速创建网站》 4.1 为啥造软件不同于造汽车,为啥是软件就一定会有Bug - 构建开发运维一体化(DevOps)

    本文是<快速创建网站>系列的第9篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  4. (视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线代码编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定

    本文是<快速创建网站>系列的第6篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  5. (视频) 《快速创建网站》 3.1 WordPress 数据导入

    本文是<快速创建网站>系列的第5篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  6. (视频) 《快速创建网站》 2.3 WordPress初始化和功能简介

    本文是<快速创建网站>系列的第4篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  7. (视频) 《快速创建网站》2.1 在Azure上创建网站及网站运行机制

    现在让我们开始一天的建站之旅. 本文是<快速创建网站>系列的第2篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http:// ...

  8. (视频) 《快速创建网站》1. 网站管理平台WordPress & 微软Azure 云计算简介

    网站并不神秘,过节了,在家闲的没事的,自己建个网站玩玩吧.每段视频不超过15分钟,地铁/公交/睡前/醒来看一段,几天之后变身建站专家,找老板加薪去! 在普通人眼里,创建网站是专业开发人员和IT工程师才 ...

  9. 在 Sublime Text 2 中使用 SFTP 插件快速编辑远程服务器文件

    在 Sublime Text 2 中使用 SFTP 插件快速编辑远程服务器文件 开源程序 浏览:29555 2013年05月02日 文章目录[隐藏] 常见的工作流程 SFTP 安装和使用方法 第一步: ...

随机推荐

  1. linux工具:ssh---未完

    ssh server_ip 或者 ssh username@server_ip 或者 ssh username@server_name , 再按提示输入密码. ____________________ ...

  2. winform利用代码将控件置于顶端底端

    有时,我们可能动态的添加控件,并准备将其置于对顶层或最底层.实现的方法有两个: 一种方法是在WinForm窗体中使用Controls控件集的SetChildIndex方法,该方法将子控件设定为指定的索 ...

  3. js ajax调用请求

    <pre name="code" class="html"> function getAppList(env){ var data = {}; da ...

  4. SqlParameter参数化查询

    上篇博客写了关于重构代码用到的SQLHelper类,这个类包括四种函数,根据是否含参和是否有返回值各分两种.在这里写写传参过程用到的SqlParameter. 如果我们使用如下拼接sql字符串的方式进 ...

  5. qt学习笔记(七)之数据库简介(所有支持数据库类型的列表)

    笔者最近用Qt写公司的考勤机.本来要求是要基于frameBuffer下用自己开发的easyGUI来进行上层应用开发,但是考虑到easyGUI提供的接口不是很多,就考虑用Qt来开发,顺带练练手. 废话不 ...

  6. 配置VS2008下的Qt开发环境有感

    写一篇小小的日志为了在VS2008中安装Qt的插件,花了我很多的时间.1.vs2008在win7中破解问题我的VS2008已经安装好了,不知道为何,当初没有破解,现在只剩下15天限制了.于是为了破解, ...

  7. python学习教程(九)sqlalchemy框架的modern映射

    首先写一个modern.py文件, from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Col ...

  8. Tomcat详细用法学习(四)

    本篇接上一篇<Tomcat详细用法学习(三)>,主要讲解配置虚拟主机.打包web应用成war包和Tomcat的体系结构 对于Tomcat服务器,可以放置多个网站(多个web应用),这就是讲 ...

  9. InitInheritedComponent的执行过程

    这{$R *.dfm}是一个编译指令,它只是用来告诉IDE,在编译的时候,把 *.dfm文件编到 exe文件资源里面,它本身没有编译进Exe里面. 因为TCustomForm是继承而来,所以调用TRe ...

  10. 单片机C语言实现的采用DS18B20的温度检测装置

    这几天老师布置了一个课程设计题目:采用51单片机控制的DS18B20温度检测系统.大概花了我一个礼拜的时间,幸好我的C语言学得还可以,最后还是让我搞出来了,真是高兴,我是采用STC-52单片机和DS1 ...