Recently in WEB 2.0 Category
分页是数据库系统中,尤其是网页中常见的功能。数量级在一万以下时,分页的性能问题觉察不出来;当在数量在一万到100万之间时,有点担心性能问题;当数量过百万时,分页性能是必须考虑的问题了。 传统方案: 索引 索引可以明显提高索引性能,自然索引可以提高分页性能。但是即使一个简单的表,每页10条,当查看1000页时,估计性能已经不能让人满意了。如何优化? /********************** 补充一点: 当你的查询是比较复杂时,索引是不是恰当也是值得注意的地方。如果你知道联合索引是怎么回事,什么地方使用,那么你可以略过此段。以下面的SQL为例: SELECT * FROM TABLEA WHERE F1 = 'value' AND F2 = 'value' 如果只是针对F1, F2单独建了索引,而没有建联合索引,则当分别符合F1, F2条件的两个记录集中数量最小某的仍然很大时,速度就不理想了。这是因为使用F1索引,但是F2的索引没有用上劲;或者,反之。如果优化索引呢,得建(F1,F2)的联合索引,这样上面的SQL语句就很快了。 ***********************/ 一点小技巧: 使用联合索引后,前几百页很快了。但是越往后,速度越慢;现在咱们使用一个技巧,最后几页,肯定是使用倒序的第一页,以此类推。 这样,分页的最后和最后都很快了。也许各位要较真了,正序和倒序的重合部分怎么办?几条记录即出现在第N页上,又出现在N+1页上,怎么办?其实这个问题不大,想一想,这个技巧只有当页码超过某个数量级之后才会应用。那时,已经无人会注意这些细节了。 大大的技巧: 联合索引可以极大提高搜索速度,能不能把分页转换成条件检索呢,换句话说,SQL始终在执行某一条件的LIMIT 10。当然可以了,我们分页时基本上按照自动编号的ID进行排序(一定意义上等同于按照时间排序)。如果每次翻页时,把当前页的最后一个ID传过去,构建SQL语句时,除了应用之前的检索条件,再加上ID范围限制,这样下一页呈现时,只需要搜索前几条就可以了。SQL语句部分不存在分页的问题了。比如构建后的SQL可能是这样的: SELECT * FROM TABLEA WHERE F1 = 'value' AND F2...
昨天,有幸玩了一下同学的iphone,感觉很爽,对触摸屏的印象很深,那缩放的过渡效果太棒了! 当然我也趁这个机会把iphone的浏览器属性采集了下来(操作系统应该是中文汉化版本,版本号不明): 'HTTP_ACCEPT_LANGUAGE' => 'zh-cn', 'HTTP_ACCEPT_ENCODING' => 'gzip, deflate', 'HTTP_USER_AGENT' => 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; zh-cn) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3', 'HTTP_ACCEPT' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', 'HTTP_CONNECTION' => 'keep-alive', 'GATEWAY_INTERFACE' => 'CGI/1.1', ...
今晚电话中,一朋友说我的博客的alexa排名被清空了。我很吃惊,马上去alexa官方网站看了一下,排名果然变成none了。 什么原因?这如同研究seo却被搜索引擎封了差不多,真是耻辱。羞耻的同时,也不解:我没有作弊,为什么要封我? 突然我想到一个原因,难道我上面有alexa认为不可接受的东西,比如alexa破解一类的?我搜了一下,果然有一条博客文章叫:完全破解alexa(抱歉,未完成)。 看来 aleax还真是小气。为了一篇文章就要封我!...
1. 如果图片和背景相同,又何必利用图片呢? 范例: 比如在Web Map中,海域的图片是相同的,甚至有些沙地的图片也是相同的,所以可以考虑抛弃图片切片,直接把背景图片暴露在外面。 2. 图片不存在显示叉号,不好看吗?可以用以下代码解决: <img src="" onerror="this.style.display='none'"> 如果再利用背景,可以实现有图片的时候显示图片,没有图片的时候显示背景。 3. GIF/JPG的选择,我也不是很清楚。我是这样决定的,如果颜色单调,尤其有时候主要是色块,用GIF;颜色丰富的时候用JPG。这样,可以在显示效果和文件大小之前有个很好的平衡。 4. 小图片太多?考虑把多个小图片合并到一个图片中,在html中靠CSS的background-position定位来按你的需求显示小图片。 这样的优势很明显,加速显示速度,减少服务器负担,减少连接数。 案例? 你猜网易登陆页用了多少图片?下面的图片就是网易把很多小图片放到了一个图片中: 5. 图片占用了很大的带宽,怎么节约这部分带宽呢? 不要考虑gzip, defleat压缩,因为用他们对图片几乎不管用。咱们还是用HTTP协议里的东西吧。让图片具有ETAG属性,或者设置缓存时间。这样客户端就不会重复下载图片了。 当然这是理论,默认情况下 ETAG是启用的。所以客户端一般会触发Not Modify 来避免重复下载。 6. 根据http建议,现有的浏览器一般对一个域名只会建立2个并发连接。这样,就可以把图片用单独域名来显示,好处很多:图片服务器只需要加载简单的模块,所以可以在服务器方面进行优化,例如用lighttpd来做图片服务器而不是apache;有利于分布式部署 7。 图片缓存影响了新图片的显示?可以考虑给文件名加上版本号,例如...
Live Skydrive目前中国地区还不能申请,但 可用英文的页面申请 。用自己hotmail、MSN 或Live 帐号登录之后,就可以看到系统的注册提示了,接受协议之后立马即可开通Windows Live Skydrive 服务 赶快申请体验一下吧! 用了很多vista图标,很好看。 页面访问采用了SSL加密,保证资料的安全型; 值得一提的是,文件上传途中不无聊了,因为微软提供了一个FLASH游戏。 可惜没有使用ajax技术,所以用户体验并不是很爽。 上传过程中的FLASH 游戏下载:...
MySQL是个好东西,网站上经常有大型网站的系统架构方面的PPT,比如这一次我看到的是Fotolog.com的PPT。 Fotolog.com 是世界最大的图片博客社区。其实包括我在内,很多人只知道Flickr,却不知道Fotolog的alexa排名一直在Flickr之上,是全球访问量最大的25个网站之一。以下是Fotolog的数据: 228 million member photos2.47 billion guestbook comments20% of members visit the site daily24 minutes a day spent by an average user10 guestbook comments per photo1,000 people or more see a photo on average7 million members...
今晚转贴的文章都是大型网站架构方面的精华. 大多数文章之前都看过至少3遍,但每边都有不同的收获。转过来和来"玩"的朋友分享。 大型Web2.0站点构建技术初探 一、 web2.0网站常用可用性功能模块分析 二、 Flickr的幕后故事 三、 YouTube 的架构扩展 四、 mixi.jp:使用开源软件搭建的可扩展SNS网站 五、 Technorati的后台数据库架构 六、 通过了解MySpace的六次重构经历,来认识分布式系统到底该如何创建 七、 从LiveJournal后台发展看大规模网站性能优化方法 八、 说说大型高并发高负载网站的系统架构 一、 web2.0网站常用可用性功能模块分析 Web 2.0网站是指将传统的网站构架(平台、内容源、用户、传播方式等)转化到以用户为核心的网站构架上来,包括一系列体现web2.0概念的元素、定位和创意。web2.0网站在构架上须体现两大宗旨,即强大的后台系统和简单的前台页面,也即提供良好的用户体验,体现以人为本,技术服务人类的宗旨。 web2.0网站常用功能块通常包括以下几大项: 1. Tag标签功能块 Tag(中文叫做"标签") 是一种新的组织和管理在线信息的方式。它不同于传统的、针对文件本身的关键字检索,而是一种模糊化、智能化的分类。 网页使用Tag标签的好处: 为页面设置一个或者多个Tag标签可以引导读者阅读更多相关文章,为别人带去流量同理也为自己带来流量。 可以帮助读者及时了解一些未知的概念和知识点,提高用户体验。 Tag是人的意志和趋向的体现,Tag可以帮助你找到兴趣相投的人。 基于以上优势,Tag标签代替了传统的分类法,成为web2.0网站使用率最高的功能块(与其说是功能块倒不如说是一种内容导航和内容组织形式)。 一句话:Tag标签是一种更灵活的分类方法,功能在于引导,特点是无处不在,体现智能性、模糊性和趋向性。 2. RSS订阅功能块 RSS是在线共享内容的一种简易方式(也叫聚合内容,Really Simple...
这篇文章是一年之前写的了,保存于blog的草稿里。估计我也没有兴趣再写完它了,只好贴出来,或许还有可能给某些人一些思路。 呵呵,口气有点大。不过,对于工具条的研究勉强可以算是"完全"。一、说一下alexa。 alexa排名,是系统根据安装alexa工具条的用户进行网站排名的。虽然技术方面不具备权威性,但似乎风投商很看中。目前,很多杀毒软件都把这东西当成木马。二、alexa的技术实现。 很奇怪,alexa工具条采用了js和html来实现数据通讯的关键,这也是安装alexa后,浏览器变慢的原因之一(此外,网络上有人反映存在内存泄露 问题)。但也因为这一点,让我们能够查看alexa的实现代码。 有时我在想,如果alexa不可以作弊,或许权威会少一点。三、如何破解。 需要2个工具: 1. reshacker 或其它exe,dll的资源查看、修改器 使用reshacker 打开alexa的资源文件,%system%/system32/AlxRes.dll (我的地址为c:WINDOWSsystem32AlxRes.dll)。在资源的分类列表中,可以点击chtml,script查看alexa的 核心代码,通过分析js,你会了解alexa的工作原理。 2. httpwatch(ie插件,可以查看http通讯细节) 或其它sniffer工具。建议添加筛选条件,只捕捉xml的mime类型(因为alexa返回的是xml)。 使用httpwatch,会得到alexa通讯的数据包,对alexa的js文件寻找数据是如何炼成的。四、破解成果。 alexa的通讯关键是2个:1个是get请求后的字符串,另一个是cookies。首先说get请求的奥秘。 aid 就是那个14位长,极像乱码的字符。此字符串是由服务器分配的,也是当前alexa的唯一标识。呵呵,这也是有奥秘可言的。当你的aid为空,或者长度不 为14时,alexa工具条会加一个字符串"&stc",这样服务器会重新给你分配一个14位的aid,所以你就可以申请足够多的aid了。 cli=10 不用讲了,固定的格式。 dat=snba ver=7.0...
至少5年不写议论文了,今天重拾一下回忆。 好厨师, 需要好的基本功。一个好的菜肴,厨师需要练上无数次才能端上饭桌。这是极其磨练人意志的,因为在这期间,厨师需要无时无刻不在思索如何把菜做得更好, 重复无数次同样的手续,经历无数次不满意,尝试过无数种可能。如果厨师没有铁杵磨成针的意志,一个好的菜肴就不可能在他的手下诞生。 做网页同样如此。做一个好的网页,需要好的基本功,需要厨师般的意志,厨师般的精神。 HTML/CSS方面。 HTML是网页的骨架。一个网页长什么样,可以从骨子里看出来。一个人对HTML了解得越深,其作品越像一件艺术品,越引得更多人欣赏: 做网页的人喜欢看,因为可以从里面学到你的思想;搜索引擎喜欢看,因为HTML表达得那么清楚;浏览器愿意支持,那么好,我为啥要让它显示不正常呢...... 在DIV+CSS的年代, CSS是骨架的修饰符。有了CSS,可以让HTML 如出水芙蓉,引人叹为观止。HTML和CSS犹如菜肴的原料。 美工。 深厚的美工功底,可以让页面美丽,吸引眼球。做网页,是给人看的。人们对网页的第一印象是感官上的,漂亮的网页才让人有食欲。一个让人捣胃的饭菜,是没有人愿意吃的。美工不但需要把网页做得好看,需要合时宜,需要和口味。众口难调,有的人喜欢吃鸡蛋,有的人讨厌吃...... 网页同样如此,喜庆需要喜庆的颜色, 儿童需要儿童的颜色, 工作需要工作的颜色...... 如何把网页做得合乎浏览者的胃口要看做网页人的功底了。 程序功底。 JS 可以让网页动起来,如何把JS调理的合适,同样是基本功。在AJAX的年代, JS是网页的调料,被广泛应用的调料。没有它,似乎饭菜不再有味。如何让调料发挥作用,而不成为败笔,是厨师的能力所在。如同有人不喜欢吃香菜,不喜欢吃醋,JS有时也会因为各种情况而失灵。如何让JS不出现这种情况, 做网页也需要考虑到这种情况。在现实中,主要考虑浏览器的挑剔,有时还会考虑到网络问题。 功力深厚的人还会考虑到其他因素,比如网易邮箱的JS会考虑你的XML解析组件是不是被破坏了...... JS算的上程序,服务器端动态脚本才是真正的程序。如何把程序做得牢固,做得严谨,不靠基本功又靠什么呢? 服务器管理基本功。 好的服务器管理,可以让程序运行得更快,更稳定...... IIS不稳定,不安全?其实,任何软件都是一样的,都有bug,都有不稳定的一面...... 在现实中,IIS的不安全,不稳定很多情况下是服务器配置的问题。比如网络上盛行的ASP木马,就是因为管理人员对IIS用户,NTFS权限设置不当而造成的。众多人反应的IIS6不稳定, 实际上是IIS的自动保护,自动停止服务。如果某一时间内,IIS的错误超过某个设定值,IIS就会自动关闭此网站,以防影响其他站点。这是不恰当的设置给网站运营造成的不变。服务器管理还有一个调优的过程,或者说调优才是服务器管理中的精髓。我认识一个BEA公司的Oracle工程师,他告诉我调优是个漫长的过程,有时需要一个周,一个月...... 对于网页服务器来说,通过其他技术可以把请求分发到多台计算机,但很多人常常忽略了服务器本身的优化,优化的功能,可以使一台机器的性能提高好几倍,也就是说可以在硬件成本不变的情况下,满足原本需要添置好几倍的服务器的需求。 幸运的是,做网页要比做菜肴简单的多。做好一个项目,下一次项目就会事半工倍,因为技术是一样的。而且做网页可以粘贴复制,可以重用,不需要像做菜那样每次都要从头再来。而且幸运的是, 做网页可以分工,如果HTML/CSS可以交给一个擅长的人做,程序交给一个人,服务器交给一个人,美工交给一个人...... 如同做菜,好的菜肴需要不断的探索,做网页也需要不断调试,不断调优...... 我突然发现,做菜和做网页原来如此相像。 ...
作者(当然是我了)对firefox推广的赚钱方案进行了深入研究,并对网络上的各家推广秘籍进行了总结和思索,总结出了本套顶级方案。如果您采用了,请点击一下我站的firefox推广广告(什么,没有?等明年吧,明年我已经把firefox推广放上去)。 1.在网页的顶部显示黄色横幅,如图所示。此招特别明显,可以明白的告诉访问者关于firefox的消息,并把访问者导向firefox推广页上。而且此效果与windows系统自带的提示很像,很容易诱惑新手:连windows系统都提示不能用IE了,可见安全等级有多高。 2. firefox功效宣传,就和药品一样,什么都能治。如果你是下载站,不妨说为了提高下载速度,我们特别开发了firefox,下载速度飞快,请下载firefox. 3. 让firefox无处不在,强化firefox在用户中的印象。比如在论坛注册时以firefox为题要求用户填写,而且区分大小写,强迫用户访问你的广告页。 4. 你必须用firefox, 强腕政策,我不让我赚钱,我就不给你用! 本方案仅供参考.请发挥自己的聪明才智,做好firefox,用firefox赚够钱!...