减少数据库的压力 缓存查询结果新建内存表 减少服务器的压力减少HTTP的请求次数 背景图片全部做成一张然后用CSS控制位置不使用AJAX来进行即时验证(不考虑客户体验什么的,通过拖长客户时间来减轻服务器压力) 减轻IO压力 页面局部缓存 一横向 、首先要考虑的就是硬件,适当地投入硬件,要比你搞那么多软件优化要实惠的多 、在就是从cpu内存硬盘了 频繁操作的数据能存到内存中就存到内存中,能存到分布共享中就存储在分布共享内存中。 其次考虑在考虑硬盘上 二纵向 、从web的http的响应应答考虑 web要有服务器,所以如何优化服务器,如何通过配置服务器加速操作,能缓存地缓存,这方面的东西不少。 、要是动态脚本,考虑使用的数据库如何优化数据库、如何建立合理的表等操作这方面细节同样不少。 、用php脚本,尽量少的require文件,毕竟每次php是一次性编译,而且每次到require都要返回这个脚本方面就要看程序员的水平了。 一、减少数据库的压力 缓存查询结果新建内存表 有条件就把数据库尽量分开,减小数据库的规模 杜绝超过0。5s的queries非常重要! 开大内存索引 二、减少Apache的压力减少HTTP的请求次数 背景图片全部做成一张然后用CSS控制位置不使用AJAX来进行即时验证(不考虑客户体验什么的,通过拖长客户时间来减轻服务器压力) 背景图片?这个没必要。静态内容不要用apache!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 三、减轻IO压力 页面局部缓存 可以lighttpapache配合的。。。lighttp负责静态的如image,js,css等,apache负责php,用rewrite转发到lighttp 甚至有研究表明,lighttp处理fastcgi模式下的php,要比apache等要快 性能上,lighttp是要优于apache的,但稳定性就差点。。 WEB方面: 1。脚本引用的资源文件如css,js,image可以多放几台服务器上,尽可能地压缩。 2。适当地加入ajax 3。尽量控制php的代码行,如果方便的话,可以写成com或so级的 4。缓存 考虑硬件成本的话可以笼统地从以下着手 一、页面尽量静态化 二、配置服务器动态的走apache,静态的走Lighttpd 三、用最好的OS如FreeBSD 四、重点优化mysql性能从编译、配置上入手 五、最基本的控制好程序性能及SQL查询 六、做缓存、做代理反向代理 七、页面上的优化了,节省流量上的考虑 静态文件用apache的代价很大,其实lighttpd和NGINX这类的也并不会小太多,有一些支持文件至网卡模式的特殊静态服务器可能划算一些。php的调用文件个数可以做到比较精确的控制,tmpfs一类的方法可以尝试,不要过分迷信memcached,本地cache适当用用回保不错 优化数据库访问 前台实现完全的静态化当然最好,可以完全不用访问数据库,不过对于频繁更新的网站,静态化往往不能满足某些功能。 缓存技术就是另一个解决方案,就是将动态数据存储到缓存文件中,动态网页直接调用这些文件,而不必再访问数据库,WordPress和ZBlog都大量使用这种缓存技术。我自己也写过一个ZBlog的计数器插件,也是基于这样的原理。 如果确实无法避免对数据库的访问,那么可以尝试优化数据库的查询SQL。避免使用Selectfrom这样的语句,每次查询只返回自己需要的结果,避免短时间内的大量SQL查询。 禁止外部的盗链。 外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对于自身的图片或者文件盗链,好在目前可以简单地通过refer来控制盗链,Apache自己就可以通过配置来禁止盗链,IIS也有一些第三方的ISAPI可以实现同样的功能。当然,伪造refer也可以通过代码来实现盗链,不过目前蓄意伪造refer盗链的还不多,可以先不去考虑,或者使用非技术手段来解决,比如在图片上增加水印。 控制大文件的下载。 大文件的下载会占用很大的流量,并且对于非SCSI硬盘来说,大量文件下载会消耗CPU,使得网站响应能力下降。因此,尽量不要提供超过2M的大文件下载,如果需要提供,建议将大文件放在另外一台服务器上。 使用不同主机分流主要流量 将文件放在不同的主机上,提供不同的镜像供用户下载。比如如果觉得RSS文件占用流量大,那么使用FeedBurner或者FeedSky等服务将RSS输出放在其他主机上,这样别人访问的流量压力就大多集中在FeedBurner的主机上,RSS就不占用太多资源了。 使用流量分析统计软件。 在网站上安装一个流量分析统计软件,可以即时知道哪些地方耗费了大量流量,哪些页面需要再进行优化,因此,解决流量问题还需要进行精确的统计分析才可以。