论坛网站和社区网站怎样做网站加速( 二 )


基于这个状况,如果你的网站的受众包括国外友人,那么你的选择:
国内无所谓,自己能访问就好,国外快快的:美帝机房/加拿大机房/日本机房/韩国机房/欧洲机房国内国外速度相对快的机房港澳台机房/日本机房/韩国机房/欧洲机房国内快速,国外可能访问不了的机房各省市机房/学校机房/港澳台机房当然,你也可以根据自己情况选择CDN加速方案:
国内机房+国内外CDN国外机房+国内外CDN当然,如果你和我的网站一样,是一个自己的无事写几笔的小站,那么选择国内的阿里云,或者香港机房都是不错的选择。
硬件说完了,我们聊聊第一节中提到的软件。
服务器软件性能“尺有所短,寸有所长”,软件也是一样,小站点,资源有限的情况下:
如果你以前使用apache,且没有使用一些三方模块,或者不需要使用apache软件套装里的高级功能,或者没有软件必须依赖apache,以及三方模块能在nginx中找到替代的,可以考虑替换为nginx。如果你的程序允许实现数据库缓存/站点内容缓存,但是没有使用缓存的,请开启缓存功能。如果你的程序使用了文件缓存,在内存资源有富裕的情况下,请使用内存缓存(自己考虑缓存策略)。如果你的程序原来的运行环境执行速度不够快,那么请考虑升级或运行环境,诸如php5.2-\u0026gt;php.5.6+,或者php5.6-\u0026gt;hhvm 3.x,asp/php-\u0026gt;nodejs。如果你的程序中多数功能你用不到,考虑使用更轻便的小程序。如果你启用了缓存,且数据库(关系数据库)读取热数据频率高于冷数据,且访问量不是特别大,不需要考虑数据库效率,否则需要考虑数据库进行分库分表和建立适当的索引,以提高数据库吞吐能力。根据自己情况适当调整nginx/mysql/redis/memcache等软件的数据分块大小。优化程序关键逻辑的流程,尽可能让程序始终遵循最短路径结束任务。尽可能让TCP链接重用,或者适当调整持久链接的时间和数量(Keep-Alive),以及考虑使用SPDY。防火墙/服务器代理软件/程序对访客限制流量。过滤或者禁止能力范围内的异常流量。DNS查询速度DNS对于站点首次打开速度至关重要,所以请尽可能选择靠谱的DNS提供商来解决DNS查询问题。
国内有两家DNS提供商比较不错:
DNSPODDNSLA除此之外,对于webkit支持DNS预缓存的浏览器,可以在页面头部尽少和尽合理的添加要缓存的DNS,以加快页面展示速度。
比如,我的页面中可能存在资源域名和附件域名。如果页面在加载的时候,同时进行这两个域名的DNS缓存操作,接下来请求这两个域名的资源的速度会更加的快。
\u0026lt;link rel="dns-prefetch" href="https://www.zhihu.com//attachment.soulteary.com"\u0026gt;\u0026lt;link rel="dns-prefetch" href="https://www.zhihu.com//assets.soulteary.com"\u0026gt;但是是否分离域名,请根据自己情况来。因为分离域名之后,不可否认的是,会带来额外的查询操作(查询本地缓存也算)。但是分离资源,可以使得程序更容易维护,以及对于程序整体安全性带来提高。
解释一下最后一句话,当初还在新浪的时候,翻看现在已然是大boss的ppt,其中提过这么一句话“执行不可写,可写不执行”。如果你的目录允许上传,那么上传目录的文件一定要限定不可执行,以及可以执行的目录,不可以进行写入操作,以免网页木马的上传,提高系统安全性。
另外,如果你将网站数据分离,那么网站的迁移操作,将会变的十分简单。比如,我将网站在国内国外迁移了若干次,只是需要先同步附件和页面资源域名,然后改变这两个域名的指向,然后同步程序文件,改版域名指向即可。
接下来,我们说说节约带宽和提高速度的一个大杀器:压缩。
页面资源压缩(服务端+客户端)提到压缩,正常用户会想到的是rar/zip/7z,媒体爱好者想到的会是ABR/CBR/VBR/H.264,我们这类代码爱好者恐怕是gzip,如果你也是前端,可能你还会想到js compressor。


推荐阅读