+ -
当前位置:首页 → 问答吧 → IIS 6.0 访问静态页面,客户端很慢,服务器上很快;但所有的动态页面两种方式都很快,求解.

IIS 6.0 访问静态页面,客户端很慢,服务器上很快;但所有的动态页面两种方式都很快,求解.

时间:2011-07-22

来源:互联网

先说一下现在情况,服务器上有大约200万的静态文件.每个文件大小在30K-90K之间.
测试的方法,C#使用多线程通过HttpWebRequest访问网站,从发出请求开始算起,到接收完HTML代码为止.不对HTML进行解析.

测试静态页面:
在客户端(开发电脑上),随机访问一个静态页面,平均在1-7秒之间,非常的慢.
在服务器上,随机访问一个静态页面,平均在5-100毫秒.(相当于访问本地,不用考虑网络问题,所有很快)

那么有人会说是网络或带宽的问题.
那么使用动态页面测试:(动态页面唯一的功能是在服务器随机读取一个静页面然后再输出)
比如如,访问/1.html和访问/read.aspx?f=1.html最终的HTML代码是一样的.

在客户端,访问这个动态页面,平均在500-2000毫秒(比上面直接访问静态要快不少).
在服务器上,结果大概在10-1000毫秒(同样对比要慢点)

以上测试,不用考虑产生随机页面时间,当然产生的随机页面都真实存在的.


实在想不出来是哪里问题造成了,通过internet(不算在服务器上自己访问自己)使用IIS直接访问静态页居然比自己写代码读取静态文件再输出要慢很多.


现在暂时的解决办法是.使用NGINX建了一个网站,根目录指向静态文件所在目录,当通过IIS问静态目录时,使用反向代理去访问NGINX,由NGINX输出静态页面给IIS,再由IIS输出给客户浏览器.


虽然上面这个请求被多次处理,但速度要比IIS直接输出要快的多.


现在待解决的问题是,是什么原因造成了不考虑带宽问题的情况下通过公网络打开静态页面这么慢.

急,来高手解答.

作者: duxer   发布时间: 2011-07-22

在客户端 试试访问服务器上的其他文件或者其他服务什么的,如果还慢, 那就公网访问时 经过不经过什么代理服务器 或者 什么网络中转设备

作者: geovil   发布时间: 2011-07-22

换个电脑客户端访问下,或者请不同地域的人测试下,看是不是都慢

作者: hongmei85   发布时间: 2011-07-22

引用 1 楼 geovil 的回复:

在客户端 试试访问服务器上的其他文件或者其他服务什么的,如果还慢, 那就公网访问时 经过不经过什么代理服务器 或者 什么网络中转设备


已经测试过了,把同一个文件放在不同的目录或同一台服务器不同域名下,都是一样的效果.
确定没有代理什么的,TRACERT跟踪过.

另外,这些问题不用测试也可以知道,因为使用IIS直接访问文件比IIS>反向代理>NGINX都要慢.理论上处理的过程越复杂越慢.


引用 2 楼 hongmei85 的回复:

换个电脑客户端访问下,或者请不同地域的人测试下,看是不是都慢


虽然测试的地点不多,但也最终的结果都和上面的差不多.

作者: duxer   发布时间: 2011-07-22