最热门文章

常用标签

云输入法 好的站点 数据之美 数据库优化 网站优化 网页安全 跨浏览器 输入法 重构 页面优化 Android CSS css优化 facebook firebug HTML html重构 html5 HTTP协议 http历史 ie javascript Last Modified lighttpd linux linux后台开发 MYSQL mysql优化 netstat ping QQ QQ云输入法 QQWeb输入法 web web开发 Web服务器 web服务器配置 web设计 WEB颜色 xhtml

Posts Tagged ‘web服务器配置’

网站优化之ETAG和Last-Modified的介绍

在众多的网站优化手册中,你会听到很多这样的说法,有的说要开启服务器的etag,有的说不要。 但是很少有人说不开启 Last-Modified,这是为什么呢,ETAG和Last-Modified之间又有什么关系呢。 Etag和Last-Modified都是有服务器端生成,并且随着文件的改变而改变,这样浏览器端就会只重新请求时,服务器会根据之前返回的etag值和last-modified的值来判断请求的文件是否发生变化, 如果没有变化的话,就给请求的agent(一般理解为浏览器)一个304的http头部,not modified的回应,告诉agent说你本地的文件还是新的,目前服务器还没有变更,你就拿本地的来用吧。从而减少浏览器端和agent端数据的流量(想想如果每次请求都返回完整的内容,当访问量大的时候,流量的有多大),加快浏览器的反应速度;另一方面,也减轻服务器端的压力,提高了服务器并发的能力。所以服务器端Etag和last modified配置上都比较重要。 呵呵,那么etag和last modified之间有什么不同点呢? 任何东东的出现都是有原因的,last modified只能精确到秒,如果一个文件1秒内被改了好些次,那么last moidfied就没有用了;再或者分布式部署的时候,由于机子的时钟有可能不一样,用户从一台机子到另外一台机子的时候,last modified就没有用了。于是etag这个类似基于文件唯一标识的hash的就出现了,这样的话,不管你服务器怎么变化,不管你1秒变化多少次,只要唯一标识的hash不变,文件不变。 一般而言,etag是根据文件的innode(文件的索引节点值)以及mtime(文件修改时间)以及size(文件大小)三个部分组成。但是这里也还是有点问题的,因为不同的服务器上,文件的innode节点有可能是不一样的,所以在配置的时候需要小心,根据自己系统的特点选择唯一的标识。但是在集群服务器上,这个是很难实现的,于是乎就有的网站优化手册里建议你关闭etag这个选项,也是有道理的。不过明晰事情的真相后,自己也可以根据自己的业务特点来使用了。 呵呵,有的服务器etag和last modified都使用了。那么web服务器处理这两个条件的优先级如何呢?(这个估计很少人去追究了) 通过跟踪了一下apache1.3的源码,得知etag的优先级高于last modified。呵呵,所以yahoo的优化法则上说关闭etag,不无道理晒。 看看apache的源码,让你来个明白: 关注加黑部分,其它的都是一些参数检查和配置检查。 int set_last_modified(request_rec *r, time_t mtime) { char *etag, weak_etag[MAX_STRING_LEN]; char *if_match, *if_modified_since, *if_unmodified, *if_nonematch; time_t now = time(NULL); if (now < 0) now = r->request_time; table_set(r->headers_out, "Last-Modified", gm_timestr_822(r->pool, (mtime > now) ? now : mtime)); /* Make an ETag header out of various pieces of information. We use * the ...


网站优化之web服务器配置优化

网站优化之web服务器配置优化 网站优化之web服务器配置优化,web服务器作为一个web运营的后台使者,一般而言,默认的配置就可以用使用了,但是如果你的站点的访问量很大,并发程度很高的时候,根据业务适当的调整能够得到不一样的效率。其实服务器配置优化的核心就是让web服务器尽快的处理完一个请求,从而减少服务器资源的使用,从而能够到达一个性能的优化 网站的前台页面进行了优化,后端的数据库服务器也进行优化,cgi程序也根据服务器的配置 进行了相关的优化,剩下的就是对应用的服务器进行相关的优化了。 这些web服务器如果按照默认的配置来运行的话,可以满足大部分的需求,如果只需要 根据业务的特性来更改几项配置就能获得较好的性能,用户能够得到更加良好的用户体验, 那还是很值得的。 常用的web类服务器有如下几个方面的: 1 负载均衡类:haproxy nginx 2 cgi服务器类:apache lighttpd nginx 3 前端cache类:varnish squid 本文主要讲讲apache 2.0的配置优化。 1 apache apache1.3支持prefork进程模式,apache2.0支持multi thread模式。 进程模式和线程模式的却别在于进程模式重量级一些,所以性能稍微低一些; 但是,稳定一些,一个进程core掉不影响其它的进程。 线程模式轻量级,性能较高;但是多个线程共享一个进程空间,一个线程的core就会影响当前的 所有线程,稳定度低一些。 至于选择线程模式还是进程模式需要根据自己的业务需要的选择了,还有就是开发写的程序是不是 足够的稳定。 httpd.conf中下面的几个参数需要注意: MaxClients:缺省值是256,描述了最多接受的客户端的数量,如果并发超过256 个客户端的话,就会被阻塞住,放到等待的队列里,所以对大并发的网站 将这个值设置大一些,如1024,不过这个值需要根据你的硬件的配置,如cpu和内存 以及带宽来定,而且2.0的环境下还需要在这个值之前设置ServerLimit 2000,否则启动时会报错 StartServers:缺省值5,意义是apache启动的时候创建的控制进程数目。 这个值也可以设置大一些,这样的话,就可以从容处理一开始的大并发 MinSpareServers:缺省值5,至少保留的空闲进程数目,如果空闲进程小于这个数目, 然后创建1个,1秒后创建2两个,然后1秒后4个直到32个。 MaxSpareServers:缺省值10,最多的空闲进程的数目,如果超过这个数目的进程数,将会被kill掉 MaxRequestsPerChild:缺省值0,每一个子进程能够处理的请求数,设置为0表示从不终止子进程, 不过最好设置为10000或稍大一点值,从而避免内存泄漏,尽早的释放占用的一些资源。 SendBufferSize:缺省值为操作系统的设置,设置tcp中的缓冲区的大小,以字节为单位, 设置这个值需要根据自己的应用来定,对于网络比较拥塞的情况,将值设置为下发包的最大的大小, 不过需要注意,这个值会影响每个tcp链接;如果网络情况良好,可以将这个值设置小一些, 从而浏览器这边可以较早的得到数据,尽早的开始渲染。 KeepAlive:缺省值是On,http1.1的协议为了减少以前每次请求都要连接的情况,设置了keepalive 这个属性,从而可以减少网络连接的负载;对于cgi的服务器建议将这个值设置为off,由于请求相对不连续, 可以提高并发量;然而对于静态文件服务器,如js、css、图片等,由于请求频繁,数据量小,建议 打开这个选项,减少网络的开销。 KeepAliveTimeout:缺省值15,服务器保持连接存活的时间,对于大并发,建议关小一点这个值, 从而可以接受更多的请求。建议设置为3~5秒。 MaxKeepAliveRequests:缺省值100,如果服务器打开的连接接受的请求已经达到这个数目,连接 将会被关闭,这个值的优先级高于MaxClients和ThreadsPerChild。 TimeOut:缺省值300,连接空闲的时间,如果空闲时间大于这个值,连接会被关闭。对于网络延迟 比较小,并发比较大,建议将这个值设置小一些,如10。 LimitRequestBody:缺省值0,PUT或者POST模式请求时的最大包的大小,0值表示没有限制。 根据自己的业务来设置这个值,避免一些恶意的过大的请求包导致服务器瘫痪。 HostnameLookups:缺省值on,输出日志时是否吧用户的IP地址转换为域名,建议关闭这个值,设置为 off,dns比较费时间的。 AllowOverride:缺省值为打开,这样apache会对每个子目录检查htaccess文件, 对性能有一定的影响,如果有必要,建议关闭这个值,设置为none Options:对于目录的操作设置,建议关闭SymLinksIfOwnerMatch,从而减少lsstat的调用, 打开FollowSymLinks ServerTokens Prod,减少返回给客户端浏览器的包的大小 在httpd.conf中注释掉你不需要的的module,一方面可以减少apache 的内存占用,毕竟每个module需要一定的内存来保存其信息;另一方面, 可以较少一些回调时的不必要的处理流程。 如果并发很大的话,还需要调整apache服务器的listenbacklog数量。 listenbacklog=511,缺省值是511(具体也要参考操作系统的相关设置),用于设置apache的等待连接队列的最大数量,如果并发很大, 或者遭遇了SYN攻击,需要将这个值设置大一些,如4096,避免一些用户的连接在队列满后被丢弃。 apache服务器尽量的开启压缩功能,由于传输的基本上都是一些html等文本数据,压缩比是很高的,开启压缩功能,能够将网络传输的字节数降到最少, 一方面节约了带宽,毕竟带宽是要花钱的,一方面可以加速下载的时间,提升用户的体验 通过添加mod_deflate模块,并进行最基本的压缩设置 AddOutputFilterByType DEFLATE text/html text/plain text/xml后,通过httpwatch观察的测试结果如下: GET /test.htm HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, */* Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Foxy/1; WPS; TencentTraveler 4.0; Foxy/1; .NET CLR 1.1.4322; .NET ...