到处都是什么大规模啊,高流量啊,高性能之类的网站架构设计,这类文章一是满足人们好奇心,但看过之后也就看过了,实际收益可能并不大;另外一个副作用是容易让人心潮澎湃,没学走先学跑,在很多条件仍不具备的情况下,过度设计、过度扩展(高德纳大爷也说过,“过早优化是万恶之源”),所以,这里反弹琵琶,讨论一下小规模、低性能、低流量的网站该如何搞法。* J# S# M# u+ e, q) K+ ]0 b: k+ T1 z
( s5 |4 Z! H+ M# q+ k* C
如果站点起步阶段可能就是一台机器(或是一台虚拟机,比如JobsDigg.com),这个时候,去关注什么数据拆分啊,负载均衡啊,都是没影子的事情。很多大站点的经验绝不能照搬,辩证的参考才是硬道理。# K. n+ H3 N# `2 z, m) W0 {
" }( Q P3 I& @3 H1 ^1 F
拥抱熟知的技术
9 {1 J( ]6 @, B; t% I' {3 D $ y! |6 g( D8 \8 ?
动手构建站点的时候,不要到处去问别人该用什么,什么熟悉用什么,如果用自己不擅长的技术手段来写网站,等你写完,黄花菜可能都凉了。所以,有现成的软件组件可用,就不要自己重新发明轮子。人家说Python牛,但自己只懂PHP,那就PHP好了,如果熟悉.net?,那也不错。用烂技术不是丢人的事情,把好技术用烂才丢人。
( I! C5 p+ w' Q# p$ c* \
* Q. }- s1 Y- s5 H 架构层次清晰化0 F# k% f( o# E7 {0 j
2 k/ a) U% }, U* _9 s 起步的阶段应该清楚的确定下来架构的层次。如果都搅和在一起,业务一旦扩增开来,如果原有的一堆东西拆不开就是非常痛苦的事情。
2 a) w H) q6 O
) w6 W7 M0 M3 i# [8 R7 W WebServer《--》(AppServer)《--》Cache(eg.Memcached)《--》DB' o9 T: p6 Q1 A* |$ B
7 I, h7 n% m1 a1 V3 F
层次清晰化的一个体现是(以LAMP架构为例):即使只有一台机器,也应该起个Memcached的实例,效果的确非常好--一般人儿我不告诉他。。.不要把什么都压到DB上,DB一旦I/O压力走到磁盘上,问题要暴露出来是很快的。没错,DB本身也会利用自己的Cache,但DB的Cache和Memcached设计出发点毕竟不一样。# V4 I& G/ K3 y: w8 W- d. ]# r) A
( A) c# t( a3 V' S- ^- O+ C 数据冗余?有必要; K* P# z5 V5 Q! K! Y) q, T$ O8 t
: b6 I6 ~+ `& S% C# J$ E' b
很多人并不是数据库设计专家,如果应用要自己设计表结构什么的,基本都是临时抱佛脚,但三个范式很多人倒是记得牢,这是大多数小型Web站点遇到的一个头疼事儿,一个小小的应用搞了几十个表。忘掉范式这个玩意儿!记住,尽可能的冗余数据,你在数据层陷入的时间越多,你在产品上投入的就会越少。用户更关心的是产品的设计。
* c- x: O$ }6 t
' k% r* U+ P4 E# `) a 前端优化很重要- t3 f5 Q9 b% c4 L7 l* {
u5 c$ y- B- n: i& `
因为流量低,访客可能也不多,这时候值得注意的是页面不要太大,多数流量低的站点吃亏就在于一个页面动辄几兆(我前两天看到一个Startup的首页有4M之大,可谓惊人),用户看个页面半分钟都打不开,你说咋发展?先把基本的条件满足,再去研究前端优化。% ?6 n9 F7 ^: ^+ |, D1 F* O" E
% g, b. k5 z9 X, m$ r http://www.120gc.cn/编辑; x& c6 O+ a. l/ f
( N* K2 [+ n3 \2 l" r- F |