(2010-12-19 12:23)
1、非分布式架构:
一般都是一个站点包含了所有操作,若做得好一点,会分为共三层,分别是web层、服务逻辑层,文件管理在最底层。

2、非分布式方案存在的问题
内存问题,由于所有层次的代码都在一个站点里边,若打开一个文件会占用5M内存,那么机器的内存能支持的最大的并发仅仅为四百多个并发(以一个进程分配2G内存算)而已,加上程序本身有一些数据需要缓存,那么很可能最大的并发就可能不够四百了,再加上站点本身操作系统等也是需要内存,站点能分到的内容就更少了,所以内存是非分布式方案的大问题。
为了解决此问题,就必须做分布式方案来扩展。
3、分布式解决方案:
分为三层,多个站点,其中web站点一个、文件管理层为一个站点(也可以为非站点模式),服务站点可以为多个站点服务,Web站点提供统一的入口,文件管理站点提供统一的文件管理,服务站点多个。

在开发中编写的js、css发布的时候,往往需要进行压缩,以减少文件大小,减轻服务器的负担。这就得每次发版本的时候,对js、js进行压缩,然后再发布。有没有什么办法,让代码到了服务器上边,它自己进行压缩呢?
既然我这么说了,那肯定是有办法的啦,~_~。
有两种办法:
第一种,在css、js请求到来的时候读取一下相对应的文件,进行压缩后返回。此方法可以通过在Global.asax的Application_BeginRequest的事件中,进行处理,也可以在web.config中注册一个httpHandler进行处理。
第二种是在程序启动的时候,对全部css以及js进行压缩,压缩之后,每次访问都使用压缩后的文件即可。这种办法可以将js全部压缩到一个文件夹里边,不过需要注意一下文件的顺序。
压缩使用的是雅虎的压缩组件: Yahoo.Yui.Compressor.dll
由于第一种办法没能实现js压缩到一个文件,所以这里采用的是第二种方案。
压缩方法比较简单,首先引用Yahoo.Yui.Compressor.dll和EcmaScript.NET.modified.dll
以下代码实现压缩js:
//
估计大家都试过这样一件事:自己千辛万苦的设计一件产品的原型,拿出来讨论之后,发现,意见很多,各种各样,参与讨论的,谁都能说上一大通似乎很有道理的意见,例如这个按钮不好看,那样布局不合理,页面流程应该这个设计,信息应该怎样显示,并且这里边更可恶的是,且这些意见中,常常会有冲突,争执起来之后,谁也不让谁,谁也说不服谁,最后只有老板凭着自己的想法来拍板。
为什么会出现这种情况呢?
是不是这些想法都不对呢?那有点偏激了。都对,也不可能。那哪些事对的,哪些是错的?为什么没有一个统一的意见,为什么会出现谁也说服不了谁的情况呢?其实这都是因为用户体验这个东西太过于复杂,而门槛太低,你可以根据自己的感受评价一下这个产品,他也可以根据他感受来说自己体验,这样就造成了一个现象,大家都认为自己感受到的是对的,我觉得这个按钮你得放在这才适合我操作,要不你的产品用户体验就不好。
那究竟用户体验是什么?其实我们真的理解了用户体验是什么东西了吗?如何解决上边的问题?
其实产品设计开发过程中,我们很多观念都是错的,
(2010-12-05 21:11)
无论哪个系统在检索上都需要花费很大的力气设计的东西,让我们现在来看看现在国内有名的图书站点(当当、卓越、京东、番薯)都是如何设计检索界面的。
首先来看检索条设计
检索相比导航来说,它的重要性是要低一些的(除了搜索引擎站点),因为使用检索的用户,一般目的都很明确,在系统的逗留时间相对来说也比较短而稳定,但使用导航的用户就不一样,他们在寻找着自己喜欢的东西,只有通过导航找不着他要找的东西的时候才会使用检索系统,所以导航系统不能占页面的很多的地方,但必须很明显,用户需要的时候,非常方便的找到。咱们来看以下站点设计:
当当:

卓越: 
&n
(2010-11-28 16:49)
上一篇文章写了分布式网站统一头部和尾部的解决办法,此文进一步来分析下一个问题,分布式网站使用弹出框登录问题(登录的页面所有子站点一致)。我描述一下此问题,一般来说多个网站之间来说,头部统一还是仅仅不够的,若是采用JS输出头部的话,登录退出链接应该是直接链接到用户中心站点上,由用户中心对用户信息进行统一处理,当用户中心处理完了之后,对子系统进行通知,告诉子系统用户登录或者退出了。
按照上边描述的话,登录和退出都必须整个页面跳转到用户中心,这样的实现方式虽然没有什么大的问题,但对于用户来说不是很友好,体验比较差。
此时我们可以考虑使用弹出框登录。
那么我们如何来做呢?
我们可以在登录链接上做文章,既然头部由用户中心的JS输出,那么我们也可以在此JS代码中加入创建一个弹出框的代码(弹出框里边是一个Iframe,链接地址是用户中心的登录页面),这样一来,便实现了登录和提交,但还有一个问题,既然登录或退出了,子系统是需要刷新页面来进行权限方面的内容的更
分布模式下的网站,由于出于统一页面框架或者出于品牌的目的,常常让模式下的各个站点的头部以及尾部一致,当然最简单的办法,就是每个网站都嵌套同样代码的头部以及尾部,但这样有个坏处,维护的时候,要到各个站点都修改一遍,非常麻烦,这时我们希望各个站点都使用一个头部和尾部,这样一来,我们维护的时候就简单多了,省去了很多麻烦。说到此处,估计大家会想到使用Iframe,当然啦,在这种需求下,这种实现办法是最简单,也解决了各个系统使用一个头部和尾部的问题,但是这样实现就是最优了吗?不是,使用IFrame增加页面的复杂度,性能上增加了页面的负担(因为一个页面需要构造两个页面,多了两个请求,浏览器维护一个页面总比两个三个压力小点,还有对于头部尾部链接来说还有小麻烦,当然子站点在业务上需要修改一下链接上的文字或者地址,或者在链接被点击的时候需要加上一个自己的处理事件,这是无法做到的,因为跨域(由于是分布式的站点,域名可能就不一样了,子站点的js无法操作头部和尾部))基于这些原因,使用IFrame在一定程度上解决一部分问题,但没有彻底的解决了问题。那到底使用什么办法呢?
我使用的是Js输出头部和尾部。
(2010-11-27 22:43)
上一篇文章写了被动认证的实现,本文接着写主动认证的实现。
(2010-11-27 19:15)
(2010-11-21 11:33)
CSS中很多时候会用到浮动来布局,也就是经常见到的float:left或者float:right
(2010-11-20 23:16)
现在越来越多的系统迫于压力以及提高性能,很多站点都是采用多站点分布式运行,例如腾讯、新浪的站点就分成很多个频道,各个频道有独立的域名,独立的IP来支撑,这样一来各个站点之间就出现了统一认证的问题,也就是需要用户在一个站点登录,其他站点都能用的,且退出之后,各个站点都不能用,形成对用户的统一管理,避免了各个子系统之间的功能冗余。