时光的脚注

Category: 未分类 (page 5 of 6)

网络推广的六大基本方式

网络推广,现在每个人都应该去了解,每一个网络服务站都应该接触一下当下最主流的推广方式,有太多的方式值得我们去研究,每一种方式都可以产生极大的营销效果,记得有一句话,一招打天下。唯一的一招,练到极致的一招。那么久说下,网络推广的六大基本方式吧

网络推广,想在网络上从事事业的人都应该去了解的知识,也有太多的方式去学习,关于网络推广方式,无非我们熟悉的和不熟悉,简单介绍一下关于网络推广的方式,也许,有的你已经用的很深了。

论坛:网络推广论坛方式,就是找一些和行业相关的论坛,然后进去宣传,一般,我们用的话,可以用到网络水军,不过据说不久就要制定网络水军规则了,就比如说你是房地产行业,那么去一些房产楼市的论坛里面去发发帖子,发一发最新的一些活动会比较好,而且从那些论坛里面找一些有价值的QQ群,然后去发送消息,这样其实也是挺好的,而且还有很多的针对性。在论坛里可以放的位置就是一些签名了,放上自己独有的信息,然后推广出去,还有在QQ群里面推广的时候,可以建立讨论组,我记得有很多那些发送中奖信息的QQ把我加入讨论组,然后发一个假的中奖信息,凝凝飞儿自己都是直接举报的。

博客:我咋感觉和外链一样了呢,呵呵,关于博客,无非就是建立一些提供这些信息的博客,不过你要保证这些信息有价值,然后好好的维护下去,通过博客去推广也是一个很好的信息,比如你去别人的博客里面去留言,一般都会受到别人的回访,你可以找一些很特定的人群去留言,我记得不是有很多的博客留言机吗?凝凝飞儿自己从来不排斥工具,自己可以用就是最好的,用的好,用的不好也都是自己的事情,不过要用的巧就是自己的事情了。而且博客如果用心维护的话还能锻炼自己的文笔,提高写作能力。

围脖:很强大的产品,发展之迅速,让每个人都惊讶,关于这个方式的推广,具有很强烈的口碑效应,一条信息会在一分钟之内传的沸沸扬扬,只要你有好的创意,发现什么新闻都可以在围脖爆料,传递的速度匪夷所思,不过关于围脖营销,首先你要有人气,用sina还是挺好的,可以去看看,并且使用之。

邮箱:以电子邮件为主要的网络推广工具,不过发送的广告可不能写得太硬,不然对方还没看就会删了,内容的话相对写得婉转一点,有点类似软文的性质,邮箱,这些都是有一些工具的的,还有一些关于QQ漂流瓶的宣传,也是一个方式,漂流瓶宣传是最新的一款QQ邮箱产品,用的好也是可以的。

网络推广还是有很多需要去学习的,无论对内还是对外都是一点点的挖掘的,做什么产品都是要推广,其实对于seo也是一样,当发现了一点一滴的时候,就要一点点的积累下来。凝凝飞儿,20110316(发),中华玻璃网,http://www.glass.cn(转载请保留)

网络营销必须要知道的五种推广方法

网络营销现在是一个比较热门的关键词,很多站长朋友们都想自己能够成为网络营销专家,因为网络营销是站长们必须要掌握的技能,如果离开了网络营销,那么站长们是很难能够赚到钱,这是和自己的利益息息相关的,可是网络营销入门的门槛低,但是竞争大,而且没有规律可循,只有不断在实际的经验里面进行总结,从而找到属于自己的网络营销技巧,这样就能够花费较少的精力获得较大的成功,下面就分享一下我的网络营销方法!

一:即时通讯工具

现在即时通讯工具比较火的自然是QQ,还有淘宝的阿里旺旺,这两种工具都有庞大的用户群,而且功能还比较丰富,特别是QQ的功能,我们既可以通过QQ群的方式来进行推广,又可以使用QQ空间来进行推广,而且这两种方法都能够进行精准营销,带过来的流量,能够让你转化成具体的利润,这就是即时通讯工具带给我们的推广平台!

二:问答类的平台

现在很多人都把网络营销的目标平台锁定为百度知道,当然还有就是搜搜问问等等,这些平台的审核是比较严格的,如果大家想要通过这个平台来所外链的SEO优化,那往往是很困难的,不过这个平台却能够成为推广的沃土,因为我们能够在问答间通过一篇软文,介绍一下自己的网站,让别人对我们的网站很有好感或者兴趣,自然就会通过其他的途径能够访问到我们的网站了,所以我们网络营销不一定要在问答内容里面添加什么链接,照样也能够有着相当不错的网络营销效果!

三:分类信息网

这个平台的权重是越来越高,大凡我们在上面发布的信息能够秒收,再加上近来赶集网,赶驴网炒得火热,自然给分类信息网带来了很多的人气,所以在这些平台上发布推广的信息,效果自然是非常好的,不过这类分类信息网对信息的审核是非常严格的,所以我们千万不要发布虚假的信息,要么自己网站的诚信度受到冲击,要么直接把id给封掉了!

四:软文推广法

这种方法目前是网络营销精英们比较喜欢使用的方法,特别是看到很多企业通过软文让自己的品牌形成了良好的口碑,甚至还赋予了品牌故事,从而让企业备受用户的喜爱,而网络营销实际上更合适这种软文的传播,因为转载的力量很大,只是软文需要花费较多的精力来写,不过只要长期不懈的去做,就一定能够获得成功!

五:做SEO优化

其实这是为了花费较少的成本获得更好的营销效果,而且做SEO优化也有助于吸引一些精准的流量,帮助网站提高转化率,因为SEO优化的目标就是把自己的网站排名提升,让更多的人能够看到自己的网站,毕竟搜索引擎是目前用户量最为庞大的群体,也是营销最好的平台,做好了SEO优化,基本上就完成了一半的网络营销任务了!

上面这些方法是众多网络营销工作者们都必须要掌握的方法,除了这些,还需要进行微创新,才能够获得别人达不到的营销高度,要不然你只能够成为网络营销的基层人员!所以不管多好的营销方法也要活学活用,才能够成为属于自己的独门秘器!来源:http://bbs.yaodu123.com 药都论坛原创首发,转载请保留。

细数网站成功赢利须具备的四大核心要素

面对互联网创业的成功者,草根站长依旧在独自奋力的打拼,为了互联网创业的梦想而努力,希望自己的网站最终能够成为一个为自己顺利赢利的成功项目。这也是每一个投身到建站事业之中的站长心中的共同憧憬,然而事实并非就能够遂人心愿,让网站顺利赢利并非一件简简单单的事。即使是获得巨额天使投资的网站也常常面临着难以找到有效的赢利模式的困境,更不用提势单力薄的个人草根站长了。然而,让个人站长仍旧不放弃信心和希望的支撑就是在我们身边,的的确确有许多的个人站长凭借着自己的努力和聪明才智,在做站的道路上实现了个人的价值,成功获利了网站赢利,并且树立了网站的品牌,扩大了影响力。这其中,像著名的站长网站诸如Admin5,中国站长站都是著名的成功案例,更不用提其他靠个人努力而赚到钱的“名牌”个人站长了。

因此,做站赢利在当前网站数量越来越多,竞争越来越激烈的情况下,难度也越来越大,但是只要抓住了网站成功赢利必须具备的四大核心要素,也便抓住了成功的关键。在做站的过程中,要围绕着这四大核心要素,逐渐积累网站各方面的资源,最终使网站具备赢利的各个要素,成功进入到赢利的轨道中。

一、由忠实用户和新鲜血液构成的用户群。

网站赖以长久生存与发展的核心基础还在于用户,正是因为用户对于相关主题内容的需求才为各种类型网站的生存提供了生存机遇,所以对于网站而言用户正如“衣食父母”,是网站最终赢利之源。要确保网站拥有并不断增加用户,就要培养属于自己的忠实用户群体,这就要利用网站的设计和运营技巧,增强网站对于用户的黏性,具体可以参考A5文章《网站建设和运营注意五处细节增强用户黏性》,从而培养足够多的忠实用户。再以此为网站的稳定流量,在此基础上利用推广和运营,吸引越来越多的新用户加入进来,从而建立一个良性的用户培养循环机制,获利数量多且忠诚度高的用户群。

二、来自搜索引擎并源源不断增长的搜索流量。

我们都知道网站初期的赢利完全可以凭借着网站流量,通过挂联盟广告或弹窗类型广告的方式把流量转化为收益,以此便可以看出流量对于网站赢利的重要性,充足的网站流量就意味着其背后充足的赢利来源。除了网站推广之外,流量的重要来源就在于搜索引擎流量。这就需要站长通过SEO优化,把网站在搜索引擎中的权重提高,使收录内容增多的同时,在关键词搜索结果中获利更加靠前的排名,从而使网民在搜索引擎中搜索相关关键词时,能够被搜索结果中的网站链接带到网站,增加网站的流量。另外,与此相辅相成的流量来源,还在于站长积极进行推广,在各种相关主题的论坛平台等地方进行的软文营销等,这些都可以带来更多的目标流量。

三、令广告商信服并乐于投资的网站影响力。

除了可以挂广告联盟的广告获利联盟广告收入之外,网站赢利的另一重要来源则在于现实中的商家投放广告的需求,而这部门需求市场一旦做大必然能够给站长带来更多更可观的广告收益。如果要吸引广告商乐于在网站上投放广告,就需要网站具备让广告商信服其商业价值的先决条件,那就是网站在某个具体领域或行业中的影响力。增强网站的行业影响力,站长可以从网站形象和内容入手,在增强网站外观设计权威性的同时,还要在内容方面下足功夫,提供有价值高质量的内容吸引用户,树立行业内的影响力,从而让广告商在评估网站商业价值时因为数量众多的目标用户群体而乐于投资。

四、提供便捷的支付方式引导用户自助充值。

对于做联盟广告或者拉广告商家投放广告来赚钱的站长而言,只需要做好在广告联盟或广告商那里的收款登记即可。然而,对于依靠用户直接付款来赢利的站点而言,则需要在网站中提供更加便利和直观的付款方式。特别是对于提供资源下载或者在线服务的一些服务性网站而言,收取用户一定的服务费用,例如会员费、VIP费用、下载积分兑换费用等,都需要为用户提供在线充值的方式,只有做好方便、明显、快捷的支付平台,才能更好地引导用户自助充值,更能吸引一些有潜在充值意愿、但对网络使用不太熟练的用户独立操作充值流程,进而增加赢利的机会,最终让网站赢利不断增长。本文由减肥药排行榜http://www.gov–gov.com原创首发,转载请保留。

外链资源收集之:如何饲养免费博客

搞seo离不开大量的外链资源,一个站长手头上如果拥有大量的外链资源,网站推广做起来就如鱼得水,特别是对于一些客户的企业站,因为他们往往都对seo了解不太多,给的词一般都是比较冷门的长尾关键词,这时候网站内部只需要稍微调整下,再在我们注册的博客上发点外链,就能够上去,先来看看我影视制作在新浪博客发的外链效果吧!我们用个指令:domain:,以下是结果:

废话就不说了,下面来说说如何饲养免费博客!

一、注册博客有技巧

我们都知道高权重的博客一搜一大堆,什么新浪、网易、搜狐、百度,如果手动注册的话,一天下来我想你也注册不了几个,而且让自己非常累,所以我们第一想到的就是有没有工具辅助我们呢?我用的是工具是所立得博客群发工具,这款工具本来是用来博文群发的,但现在百度算法变了,用这个工具群发文章,会收到百度的严重惩罚,所以现在只用来注册博客了,这款工具最大的好处是代替我们注册那些免费的博客,高权重博客有60个左右,比如现在我要注册北京灯光音响租赁这个网站,我只要在博客名称填上:北京灯光音响租赁,然后在博客简介这边填上:北京灯光音响欢迎大家来访!用户名名跟密码都是有自己设定的,最后只需要全选所有的博客,点击注册,几个小时的时间就把60个博客给你搞定了!我们只需要辅助这个工具输入一下验证码,就ok了!

二、如何管理自己的免费博客

假如你一口气注册了50个免费博客,没有时间去管理。这些免费资源就白白浪费了,所以我们要时不时的去给他上一些数据,更新他,很多站长朋友如果没什么时间的话,就不要太贪婪了,管理好4,5个博客都比你不管理4,5十个博客强,当初我也是注册了一大批博客,每天往那些博客发文章就得花费大量的时间,后面觉得这种方法不可靠,于是想了个办法,叫自己的亲戚朋友帮我管理,他们可以发自己生活中的一些感悟,日记之类的,哈哈,都是些原创,这也正好是搜索引擎最喜欢的东西,后面觉得还不满足,会上网的亲戚朋友毕竟不是很多,而且自己家有电脑的就寥寥无几了,于是又想了个办法,叫那些没事干的初中生帮我更新,一个月给他们一点Q币,他们也高兴的不得了!

三、饲养免费博客注意事项

1、不要往刚注册好的博客发外链。刚注册的博客权重很低,发了也是白发的,跟本不会被搜索引擎收录,只有我们慢慢的饲养,到了一定时间,在里面发外链效果非常不错的!

2、不要每篇文章都发外链。有的朋友很贪婪,每发一篇文章都给加上链接,这对于博客的权重的提升是一个很大的阻碍,而且这样做免费博客也有被封的危险,我就有这样的经历,以前注册了一个半岛博客,权重不错,收录也是非常好,于是每发一篇文章就网里头加链接,给我的网站排名效果也是非常好,让我甜蜜了一段时间,但好景不长,发了大概100来篇的时候,博客被封了,进去时提升我:不存在此博客,让我伤心不已;另外一个是百度空间博客,也是跟上面的做法一样,百度的产品这样做,肯定逃不过他的魔爪,这样得不偿失的做法让我吸取了教训。所以大家不要以为免费博客就很安全,你只要稍不注意也会有危险的时候!

3、博客链轮值得尝试。a-b-c-d-a 相信这个大家都会了,具体有没有人运用于免费博客上,我想应该还不是很多,从以前那个所得立博客群发软件来看,效果还是不错,几乎文章都能被搜索引擎给收录!

文章由 北京灯光音响租赁 www.wenliguoji.com 原创 转载请注明文章来源 谢谢大家 !!!

 

123Systems $15/年192MB OpenVZ Dallas机房

人民币不是橘子皮,除了某些特别强悍的有钱淫,站长们的钱包都是不够鼓的,所以性价比是灰常重要滴,今天,uper给大家介绍一款灰常灰常性价比的VPS。

价格很熟悉,15美元一年,但是要说明一下,此15美元非彼15美元。

首先介绍下这款VPS的服务商: 123Systems.net。(此处省略若干字)自己百度或者google一下就可以知道。

进入正题,本款VPS机房位于dallas(达拉斯)

美国德州达拉斯(Dallas)机房的背景 美国德州达拉斯(Dallas)机房是世界排名第一的机房,作为海外机房中的主力,美国德州达拉斯(dallas)机房拥有得天独厚的网络条件——与全球各个互联网发达国家都建立了高速互联网络。

美国德州达拉斯(dallas)机房拥有世界一流的管理经验及世界先进的机房管理系统,包括前端网络的自动化WEB入口服务、DNS认证、监控,后端服务网络的自动化升级服务管理、硬件供应及操作系统安装服务管理、DNS处理服务、监控和图表服务管理、IPMI控制服务…。

废话这么多,还不是就一句话,中国大陆访问速度不错的。

VPS详细信息:

基于OpenVZ,即使安装,免费!

保证内存 RAM: 192MB

突发内存 RAM: 384MB

硬盘: 10GB

流量: 500GB/月

2vCPU

1 IP (官方网站上说支持IPv6,订购之后可发ticket向客服索取)

SolusVM控制面板

PS:可升级内存,具体价格见下图,貌似是一次性的,价格很实惠的!

123Systems

没有优惠码。购买请猛击:只有这个地址才能购买该款VPS

作者:uper

文章来源:主机迷 转载请注明出处链接。

 

 

HTML5设计原理

Jeremy Keith在 Fronteers 2010 上的主题演讲

下载PPT(PDF)

观看视频

今天我想跟大家谈一谈HTML5的设计。主要分两个方面:一方面,当然了,就是HTML5。我可以站在这儿只讲HTML5,但我并不打算这样做,因为如果你想了解HTML5的话,你可以Google,可以看书,甚至可以看规范。

实际上,确实有人会谈到规范的内容。史蒂夫·福克纳(Steve Faulkner)会讲HTML5与可访问性。而保罗·艾里什(Paul Irish)则会讲HTML5提供的各种API。因此,我今天站在这里,不会光讲一讲HTML5就算完事了。

说老实话,在正式开始之前,我想先交待清楚我所说的HTML5到底是什么意思。这话听起来有点搞笑:这会子你一直在说HTML5,难道我们还不知道什么是HTML5吗?大家知道,有一个规范,它的名字叫HTML5。我所说的HTML5,指的就是这个规范。但问题是,有些人所说的HTML5,指的不仅仅是这个规范,还有别的意思。比如说,用HTML5来代指CSS3就是一种常见的叫法。我可不是这样的。我所说的HTML5,不包含CSS3,就是HTML5。

类似的术语问题以前也有过。Ajax本来是一种含义明确的技术,但过了不久,它的含义就变成了“用JavaScript来做一切好玩的东西”。这就是Ajax,对不对?今天,HTML5也面临同样的问题,它本来指的是一个特定的规范,但如今含义却成了“在Web上做一切好玩的事。”我说的不是这种HTML5,不是这种涵盖了最近刚刚出现的各种新东东的HTML5。我说的仅仅是规范本身:HTML5。

刚才已经说了,我今天想要讲的内容不多,也没有打算介绍HTML5都包含什么。今天我要讲的是它的另一方面,即HTML5的设计。换句话说,我要讲的不是规范里都包含什么,而是规范里为什么会包含它们,以及在设计这个规范的时候,设计者们是怎么看待这些东西的。

设计原理

设计原理本质上是一种信念、一种想法、一个概念,是你行动的支柱。不管你是制定规范,还是制造一种有形的物品,或者编写软件,甚至发明编程语言。你都能找到背后的一个或者多个设计原理,多人协作的任何成果都是例证。不仅仅Web开发领域是这样。纵观人类历史,像国家和社会这样大规模的构建活动背后,同样也有设计原理。

就拿美国为例吧,美国的设计原理都写在了《独立宣言》中了。

 

我们认为这些真理是不言而喻的,人人生而平等,造物主赋予了每个人不可剥夺的权利,包括生存、自由和追求幸福。

 

这里有一句口号:生存、自由和追求幸福。这是被写进宪法中的核心理念,它关系到我们所有人的一切,也就是我们构建自己社会的原则。

还有一个例子,就是卡尔·马克思(Karl Marx),他的著作在20世纪曾被奉为建设社会主义的圭臬。其基本思想大致可以归结为下面这条设计原理:

 

各尽所能,各取所需。

 

这其实就是一种经济体系背后的设计原理。

还有一个例子,比前面两个的历史更久远一些,不过大同小异:

 

人人为我,我为人人。

 

这个极为简单的设计原理,是两千年前的拿撒勒犹太人耶稣基督提出来的。而这条原则成为了后来许多宗教的核心教义。原理与实践有时候并不是同步的。

下面是小说中的一个例子。英国小说家乔治·奥威尔(George Orwell)笔下的《动物庄园》,就是在一条设计原理的基础上构建起来的虚拟社会。这条设计原理是:

 

四条腿的都是好人,两条腿的都是坏蛋!

 

《动物庄园》中有意思的是,随着社会的变迁——变得越来越坏,这条设计原理也跟着发生了改变,变成了“四条腿的都是好人,两条腿的就更好了。”最关键的是,即使是在虚构的作品里,设计原理都是存在的。

还有一套虚构的作品是以三条设计原理为基础构建起来的,那就是美国著名小说家艾萨克·阿西莫夫(Issac Asimov)的机器人经典系列。阿西莫夫发明了机器人学这个术语,并提出了机器人学三大法则,然后在这三个简单的设计原理基础上创作了一系列经典作品——大约有50本书。无论作品的情节如何变化,实际上都是从不同的角度来阐释这三大设计原理。我想,在座各位对机器人三大法则都不应该陌生。

 

机器人不得伤害人类,或袖手旁观人类受伤害。

机器人必须服从人类命令,除非命令违反第一法则。

机器人必须自卫,只要不违背第一和第二法则。

 

这些恐怕是第一次出现在小说中的针对软件的设计原理了。虽然基于这三个设计原理的软件运行在虚构的机器人的“正电子脑”中,但我想这应该是软件设计原理的事实开端。从此以后,我们才看到大量优秀软件背后的设计原理。

蒂姆·伯纳斯-李(Tim Berners-Lee),Web的发明者,在W3C的网站上发表过一份文档,其中有一个URL给出了他自己的一套设计原理。这些设计原理并不那么容易理解,不仅多,而且随着时时间推移,他还会不断补充、修改和删除。不过我还是觉得把自己认同的设计原理写出来放在某个地方真是个不错的主意。

实际上,CSS的发明人之一伯特·波斯(Bert Bos),也在W3C的网站上放着一份文档,其中讲的都是基本的设计原理,比如怎样设计并构建一种格式,无论是CSS还是其他格式。推荐大家看一看。

只要你在W3C的站点中随便找一找,就可以发现非常多的这种设计原理,包括蒂姆·伯纳斯-李个人的。当然,你还会看到他从软件工程学校里借用的一些口号:分权(decentalisation)、容忍(tolerance)、简易(simplicity)、模块化(modularity)。这些都是在他发明新格式的时候,头脑中无时无刻不在想的那些关键词。

在座各位对蒂姆·伯纳斯-李的贡献都是非常熟悉的,因为大家每天都在用。他发明了Web,与罗伯特·卡里奥(Robert Cailliau)共同发明了Web,而且在发明Web的同时,也发明了我们每天都在Web上使用的语言。当然,这门语言就是HTML:超文本标记语言。

HTML

HTML最早是从2.0版开始的。从来就没有1.0版。如果有人告诉你说,他最早是从HTML 1.0开始使用HTML的,那他绝对是在忽悠你。从前确实有一个名叫HTML Tags的文档,其中的部分标签一直用到现在,但那个文档并非官方的规范。

使用标签、尖括号、p或h1,等等,并不是蒂姆·伯纳斯-李首创的想法。当时的SGML里就有了这些概念,而且当时的CERN(Conseil Europeen pour la Recherche Nucleaire,欧洲核子研究委员会)也在使用SGML的一个特定的版本。也就是说,即便在那个时代,他也没有白手起家;这一点在HTML后来的发展过程中也体现了出来:继往开来、承前启后,而不是另立门户、从头开始。

换句话说,这篇名为HTML Tags的文档可以算作HTML的第一个版本,但它却不是一个正式的版本。第一个正式版本,HTML 2.0,也不是出自W3C之手。HTML 2.0是由IETF,因特网工程任务组(Internet Engineering Task Force)制定的。在W3C成立之前,IETF已经发布了不少标准。但从第三个版本开始往后,W3C,万维网联盟(World Wide Web Consortium)开始接手,并负责后续版本的制定工作。

20世纪九十年代HTML有过几次快速的发展。众所周知,在那个时代要想构建网站,可是一项十分复杂的工程。浏览器大战曾令人头疼不已。市场竞争的结果就是各家浏览器里都塞满了各种专有的特性,都试图在专有特性上胜人一筹。当时的混乱程度不堪回首,HTML到底还重不重要,或者它作为Web格式的前景如何,谁都说不清楚。

从1997年到1999年,HTML的版本从3.2到4.0到4.01,经历了非常快的发展。问题是到了4.01的时候,W3C的认识发生了倒退,他们说“好了,这个版本就这样了,HTML也就这样了;HTML 4.01是HTML的最后一个版本了,我们用不着HTML工作组了。”

W3C并没有停止开发这门语言,只不过他们对HTML不再感兴趣了。在HTML 4.01之后,他们提出了XHTML 1.0。虽然听起来完全不同,但XHTML 1.0与HTML 4.01其实是一样的。我的意思是说,从字面上看这两个规范的内容是一样的,词汇表是一样的,所有的元素是一样,所有的属性也都是一样的。唯一一点不同之处,就是XHTML 1.0要求使用XML语法。也就是说,所有属性都必须使用小写字母,所有元素也必须使用小写字母,所有属性值都必须加引号,你还得记着使用结束标签,记着对img和br要使用自结束标签。

从规范本身的内容来看,实际上是相同的,没有什么不同。不同之处就是编码风格,因为对浏览器来说,读取符合HTML 4.01、HTML 3.2,或者XHTML 1.0规范的网页都没有问题,对浏览器来说这些网页都是一样的,都会生成相同的DOM树。只不过人们会比较喜欢XHTML 1.0,因为不少人认同它比较严格的编码风格。

到了2000年,Web标准项目(Web Standards Project)的活动开展得如火如荼,开发人员对浏览器里包含的那些乱七八糟的专有特性已经忍无可忍了。大家都很生气,就骂那些浏览器厂商“遵守个规范就他妈的真有那么难吗?”当时CSS有了长足的发展,而且与XHTML 1.0结合得也很紧密,CSS加XHTML 1.0基本上就可以算是“最佳实践”了。虽然在我看来HTML 4.01与XHTML 1.0没有本质上的不同,但大家都接受了。专业的开发人员能做到元素全部小写,属性全部小写,属性值也全部加引号:由于专业人员起到了模范带头作用,越来越多的人也都开始支持这种语法。

我就是一个例子!过去的10年,我一直都使用XHTML 1.0文档类型,原因是这样一来验证器就能给我帮上很大的忙,对不对?只要我写的是XHTML 1.0,然后用验证器测试,它就能告诉我是不是忘了给属性值加引号,是不是没有结束某个标签,等等等等。而如果我写的是HTML 4.01,同样的问题就变成了有效的了,验证器就不一定会提醒我了。

这就是我一直使用XHTML 1.0的原因。我估计很多人都……使用XHTML 1.0的朋友,请把手举起来。好的。HTML 4.01呢?人少多了。一直没有举手的呢,大声点,你们用什么?HTML5,也很好!更早的呢,还有人使用更早的文档类型吗?没有了?

10年来我一直使用XHTML 1.0,就是因为验证器能够真正帮到我。有人用XHTML 1.1吗?你知道有人用吗?请举手,别放下。有人把网页标记为XML文档吗?有吗?那你们使用的就不是XHTML 1.1。

这就是个大问题。XHTML 1.0之后是XHTML 1.1,只是小数点后面的数字加了一个1,而且从词汇表的角度看,规范本身没有什么新东西,元素也都相同,属性也都相同。但对XHTML 1.1来说,唯一的变化是你必须把自己的文档标记为XML文档。在使用XHTML 1.0的时候,还可以把文档标记为HTML,而我们也正是这样做的,否则把文档标记为XML没准真会把人逼疯的。

为什么这么说呢?首先,把文档标记为XML后,Internet Explorer不能处理。当然,IE9是可以处理了。恐怕有人会讲“真是太可爱了”,他们到现在居然都没有忘了这件事。这艘船终于靠岸了!不过那时候,作为全球领先的浏览器,IE无法处理接收到的XML文档类型的文档,而规范又要求你以XML文档类型来发送文档,这不把人逼疯才怪呢。

所以说XHTML 1.1有点脱离现实,而你不想把文档以XML格式发送给那些能够理解XML的浏览器,则是因为XML的错误处理模型。XML的语法,无论是属性小写,元素小写,还是始终要给属性值加引号,这些都没有问题,都很好,事实上我也喜欢这样做,但XML的错误处理模型却是这样的:解析器如果遇到错误,停止解析。规范里就是这么写的。如果你把XHTML 1.1标记为XML文档类型,假设你用Firefox打开这个文档,而文档中有一个和号(&)没有正确编码,就算整个页面中就这一处错误,你看到的也将是黄屏,浏览器死掉了。Firefox会说:“没戏了,页面中有一个错误,你看不到这个网页了。”根据XML规范,这样处理是正确的,对Firefox而言,遇到错误就停止解析,并且不呈现其他任何内容是严格按照XML规范做的。因为它不是HTML,HTML根本就没有错误处理模型,但根据XML规范,这样做没错。

这就是为什么你不会把文档标记为XML的另一个原因。接下来,新的版本是XHTML 2,大家注意后面没有日期,因为这个规范并没有完成。

现在就说说XHTML 2,我很愿意把问题说清楚,XHTML 2实际上真是一个非常非常好的规范,确实非常好……从理论的角度来说。我的意思是说,制定这个规范的人都是非常非常有头脑的。直说吧,领导制定这个规范的家伙是斯蒂芬·彭伯顿(Stephen Pemberton),他应该是本地人,是一个聪明过人的家伙。规范本身也很了不起,如果所有人都同意使用的话,也一定是一个非常好的格式。只不过,还不够实际。

首先,XHTML 2仍然使用XML错误处理模型,你必须保证以XML文档类型发送文档;这一点不言自明:没人愿意这样做。其次,XHTML 2有意不再向后兼容已有的HTML的各个版本。他们甚至曾经讨论过废除img元素,这对每天都在做Web开发的人来说确实有点疯了的味道。但我们知道,他们之所以这样做,理论上确实有充足的理由——使用object元素可能会更好。

因此,无论XHTML 2在理论上是多么完美的一种格式,但却从未有机会付诸实践。而之所以难以将其付诸实践,就是因为像你我这样的开发人员永远不会支持它,它不向后兼容。同样,浏览器厂商也不会,浏览器厂商必须要保证向后兼容。

为什么XHTML 1.1没有像XML那样得到真正广泛地应用,为什么XHTML 2从未落到实处?因为它违反了一条设计原理,这条设计原理就是著名的伯斯塔尔法则(Postel’s Law)。大家都知道:

 

发送时要保守;接收时要开放。

 

没错,接收的时候要开放,而这也正是Web得以构建的基础。开发浏览器的人必须敞开胸怀,接收所有发送给浏览器的东西,因为它们过去一直都在接收那些不够标准的东西,对不对?Web上的很多文档都不规范,但那正是Web发展的动力。从某种角度讲,Web走的正是一条混沌发展之路,虽然混沌,但却非常美丽诱人。在Web上,格式不规范的文档随处可见,但那又怎样呢?如果所有人都能够写出精准的XML,所有文档的格式都十分正确,那当然好了。可是,那不现实。现实是伯斯塔尔法则。

作为专业人士,在发送文档的时候,我们会尽量保守一些,尽量采用最佳实践,尽量确保文档格式良好。但从浏览器的角度说,它们必须以开放的姿态去接收任何文档。

有人可能会说XML有错误处理模型,XHTML 1.1和XHTML 2都使用该模型,但那个错误处理模型太苛刻了。它绝对不符合接收时开放这个法则,遇到一个错误就停止解析怎么能叫开放呢?我们只能说它与健壮性法则(也就是伯斯塔尔法则)是对立的。

HTML5

之后,就到了HTML5,但HTML5并不是由W3C直接制定的。故事的经过是这样的,到20世纪末的时候,还没有HTML工作组,W3C内部的一些人就开始琢磨了,“HTML也许还可以更长寿一点,只要我们对它稍加扩展就行了。只要把我们放在XHTML上的时间和精力拿出一部分来,就可以提升一下HTML中的表单,可以让HTML更接近编程语言,就可以让它更上一层楼。”

于是,在2004年W3C成员内部的一次研讨会上,当时Opera公司的代表伊恩·希克森(Ian Hickson)提出了一个扩展和改进HTML的建议。他建议新任务组可以跟XHTML 2并行,但是在已有HTML的基础上开展工作,目标是对HTML进行扩展。W3C投票表决的结果是——“反对”,因为HTML已经死了,XHTML 2才是未来的方向。然后,Opera、Apple等浏览器厂商,以及其他一些成员说:“那好吧,不指望他们了,我们自已一样可以做这件事,我们脱离W3C。”他们成立了Web Hypertext Applications Technology Working Group(Web超文本应用技术工作组,WHATWG)——可巧的是,他们自称工作组,而不是特别小组(task force),这就为HTML5将来的命运埋下了伏笔。

WHATWG决定完全脱离W3C,在HTML的基础上开展工作,向其中添加一些新东西。这个工作组的成员里有浏览器厂商,因此他们不仅可以说加就加,而且还能够一一实现。结果,大家不断提出一些好点子,并且逐一做到了浏览器中。

WHATWG的工作效率很高,不久就初见成效。在此期间,W3C的XHTML 2没有什么实质性的进展。特别是,如果从实现的角度来说,用原地踏步形容似乎也不为过。

结果,一件有意思的事情发生了。那是在2006年,蒂姆·伯纳斯-李写了一篇博客,说:“你们知道吗?我们错了。我们错在企图一夜之间就让Web跨入XML时代,我们的想法太不切实际了,是的,也许我们应该重新组建HTML工作组了。”善哉斯言,后来的故事情节果真就是这样发展的。W3C在2007年组建了HTML5工作组。这个工作组面临的第一个问题,毫无疑问就是“我们是从头开始做起呢,还是在2004年成立的那个叫WHATWG的工作组既有成果的基础上开始工作呢?”答案是显而易见的,他们当然希望从已经取得的成果着手,以之为基础展开工作。于是他们又投了一次票,同意“在WHATWG工作成果的基础上继续开展工作”。好了,这下他们要跟WHATWG并肩战斗了。

第二个问题就是如何理顺两个工作组之间的关系。W3C这个工作组的编辑应该由谁担任?是不是还让WHATWG的编辑,也就是现在Google的伊恩·希克森来兼任?于是他们又投了一次票,赞成“让伊恩·希克森担任W3C HTML5规范的编辑,同时兼任WHATWG的编辑,更有助于新工作组开展工作。”

这就是他们投票的结果,也就是我们今天看到的局面:一种格式,两个版本。WHATWG的网站上有这个规范,而W3C的站点上同样也有一份。

如果你不了解内情,很可能会产生这样的疑问:“哪个版本才是真正的规范?”当然,这两个版本内容是一样的……基本上相同。实际上,这两个版本将来还会分道扬镳。现在已经有了分道扬镳的迹象了。我的意思是说,W3C最终要制定一个具体的规范,这个规范会成为一个工作草案,定格在某个历史时刻。

而WHATWG呢,他们还在不断地迭代。即使目前我们说的HTML5,也不能完全涵盖WHATWG正在从事的工作。最准确的理解是他们正在开发一项简单的HTML或Web技术,因为这才是他们工作的核心目标。然而,同时存在两个这样的工作组,这两个工作组同时开发一个基本相同的规范,这无论如何也容易让人产生误解。误解就可能造成麻烦。

其实这两个工作组背后各自有各自的流程,因为它们的理念完全不同。在WHATWG,可以说是一种独裁的工作机制。我刚才说了,伊恩·希克森是编辑。他会听取各方意见,在所有成员各抒己见,充分陈述自己的观点之后,他批准自己认为正确的意见。

W3C则截然相反,可以说是一种民主的工作机制。所有成员都可以发表意见,而且每个人都有投票表决的权利。这个流程的关键在于投票表决。从表面上看,WHATWG的工作机制让人不好接受。岂止是不好接受,简直是历史的倒退。相信谁都会认为“运作任何项目都不能采取这种方式!”

W3C的工作机制听起来让人很舒服。至少体现了人人平等嘛。但在实践中,WHATWG的工作机制运行得非常非常好。我认为之所以会这样,主要归功于伊恩·希克森。他的的确确是一个非常称职的编辑。他在听取各方意见时,始终可以做到丝毫不带个人感情色彩。

从原理上讲,W3C的工作机制很公平,而实际上却非常容易在某些流程或环节上卡壳,造成工作停滞不前,一件事情要达成决议往往需要花费很长时间。那到底哪种工作机制最好呢?我认为,最好的工作机制是将二者结合起来。而事实也是两个规范制定主体在共同制定一份相同的规范,我想,这倒是非常有利于两种工作机制相互取长补短。

两个工作组之所以能够同心同德,主要原因是HTML5的设计思想。因为他们从一开始就确定了设计HTML5所要坚持的原则。结果,我们不仅看到了一份规范,也就是W3C站点上公布的那份文档,即HTML5语言规范,还在W3C站点上看到了另一份文档,也就是HTML设计原理。而这份文档的一位编辑今天也来到了我们大会的现场,她他就是安妮·奇泰丝(Anne Van Kesteren)。如果大家对这份文档有问题,可以请教安妮。

这份文档非常好,真的非常出色。这份文档,可以说见证了W3C与WHATWG同心协力共谋发展的历程。难道你们不觉得他们像是一对欢喜冤家吗?那他们还怎么同心同德呢?这份文档忠实地记录了他们一道做了什么,他们共同拥护什么。

接下来,我想要讲的就是这份文档。因为,既然他们能就这份文档达成共识,那么我相信,HTML5必将是一个伟大的规范,而他们已经认可这就是他们的共同行动纲领。为此,你才会看到诸如兼容性、实用性、互用性之类的概念。即便W3C与WHATWG之间再有多大的分歧——确实相当多——至少他们还有这份文档中记录的共识。这一点才是至关重要的。正因为他们有了共识,才有了这份基于共识描述设计原理的文档。

避免不必要的复杂性

下面我就给大家介绍一些这份文档中记载的设计原理。第一个,非常简单:避免不必要的复杂性。好像很简单吧。我用一个例子来说明。

假设我使用HTML 4.01规范,我打开文档,输入doctype。这里有人记得HTML 4.01的doctype吗?好,没有,我猜没有。除非……我的意思是说,你是傻冒。现场恐怕真有人背过,这就是HTML 4.01的doctype:

 

<!DOCTYPE html PUBLIC “-//W3C/DTD HTML 4.01//EN”
http://www.w3.org/TR/html4/strict.dtd“>

 

我不记这个两行代码,不然还要记事本、要Google、要模板有什么用呢?

要是我使用XHTML 1.0呢,这个规范我都已经用了10年了。有谁记得住这个doctype吗?没错,它的长度跟HTML 4.01的差不太多:

 

<!DOCTYPE html PUBLIC “-//W3C/DTD XHTML 1.0 Strict//EN”
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>

 

是不是,基本上相同。它要告诉浏览器的是:这个文档是XHTML 1.0的文档。那么在HTML 5中,省掉不必要的复杂性,doctype就简化成了:

 

<!DOCTYPE html>

 

仅此而已。好了,就连我也能过目不忘了。我用不着把这几个字符记在记事本里了。我得说,在我第一次看到这个doctype的时候——我当然以为这是一个HTML文档的doctype——被它吓了一跳:“是不是还少一个数字5啊?”我心里想:“这个doctype想告诉浏览器什么呢?就说这个文档是HTML吗?难道这是有史以来唯一一个HTML版本吗,这件事我得首先搞清楚,HTML今后永远不会再有新版本了吗?”好一副唯我独尊的架式!我错了,因为这个doctype并没有这个意思。为此,必须先搞清楚为什么文档一开头就要写doctype。它不是写给浏览器看的。Doctype是写给验证器看的。也就是说,我之所以要在文档一开头写那行XHTML 1.0的doctype,是为了告诉验证器,让验证器按照该doctype来验证我的文档。

浏览器反倒无所谓了。假设我写的是HTML 3.2文档,文档开头写的是HTML 3.2的doctype。而在文档中某个地方,我使用了HTML 4.01中才出现的一个元素。浏览器会怎么处理这种情况?它会因为这个元素出现在比doctype声明的HTML版本更晚的规范中,就不解释呈现该元素吗?不会,当然不会!它照样会解释呈现该元素,别忘了伯斯塔尔法则,别忘了健壮性。浏览器在接收的时候必须要开放。因此,它不会检查任何格式类型,而验证器会,验证器才关心格式类型。这才是存在doctype的真正原因。

而按照HTML5的另一个设计原理,它必须向前向后兼容,兼容未来的HTML版本——不管是HTML6、HTML7,还是其他什么——都要与当前的HTML版本,HTML5,兼容。因此,把一个版本号放在doctype里面没有多大的意义,即使对验器证也一样。

刚才,我说doctype不是为浏览器写的,这样说大多数情况下没有问题。在有一种情况下,你使用的doctype会影响到浏览器,相信在座诸位也都知道。但在这种情况下,Doctype并非真正用得其所,而只是为了达到某种特殊的目的才使用doctype。当初微软在引入CSS的时候,走在了标准的前头,他们率先在浏览器中支持CSS,也推出了自己的盒模型——后来标准发布了,但标准中使用了不一样的盒模型。他们怎么办?他们想支持标准,但也想向后兼容自己过去推出的编码方式。他们怎么知道网页作者想使用标准,还是想使用他们过去的方式?

于是,他们想出了一个非常巧妙的主意。那就是利用doctype,利用有效的doctype来触发标准模式,而不是兼容模型(quiks mode)。这个主意非常巧妙。我们今天也都是这样在做,在我们向文档中加入doctype时,就相当于声明了“我想使用标准模式”,但这并不是发明doctype的本意。这只是为了达到特殊的目的在利用doctype。

下面我出一道有奖抢答题,听好:“一分钟后开始,如果你手快的话,第一个在文档前面写完doctype html,然后我用Internet Explorer打开你的文档,会触发它的标准模式,还是会触发它的兼容模式?”

答案是,这是在Internet Explorer中触发标准模式的最少字符数目。我认为这也说明了HTML5规范的本质:它不追求理论上的完美。HTML5所体现的不是“噢,给作者一个简短好记的doctype不好吗?”,没错,简短好记是很好,但如果这个好记的doctype无法适应现有的浏览器,还不如把它忘了更好。因此,这个平衡把握得非常好,不仅理论上看是个好主意——简短好记的doctype,而且实践中同样也是个好主意——仍然可以触发标准模式。应该说,Doctype是一个非常典型的例子。

还有一个例子,同样可以说明规范是如何省略不必要的复杂性,避免不必要的复杂性的。如果前面的文档使用的是HTML 4.01,假设我要指定文档的字符编码。理想的方式,是通过服务器在头部信息中发送字符编码,不过也可以在文档这个级别上指定:

 

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>

 

同样,我也不会把这行代码背下来。我还想省下自己的脑细胞去记点别的更有价值的东西呢。不过,如果我想指定文档使用UTF-8编码,只能添加这行代码。这是在HTML 4.01中需要这样做。要是你在XHTML 1.0指定同样的编码,就得多敲一下键盘,因为你还得声明meta元素位于一个开始的XML标签中。

 

<?xml version=”1.0″ encoding=”UTF-8″ ?>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />

 

在HTML5中,你要敲的字符只有:

 

<meta charset=”utf-8″>

 

简短好记。我能背下来。

同样,这样写也是有效的。它不仅适用于最新版本的浏览器,只要是今天还有人在用的浏览器都同样有效。为什么?因为在我们把这些meta元素输入浏览器时,浏览器会这样解释它:“元数据(meta)点点点点点,字符集(charset)utf-8。”这就是浏览器在解释那行字符串时真正看到的内容。它必须看到这些内容,根据就是伯斯塔尔法则,对不对?

我多次提到健壮性原理,但总有人不理解。我们换一种说法,浏览器会想“好,我觉得作者是想要指定一个字符集……看,没错,utf-8。”这些都是规范里明文规定的。如今,不仅那个斜杠可以省了,而且总共只要写meta charset=”utf-8″就行了。

关于省略不必要的复杂性,或者说避免不必要的复杂性的例子还有不少。但关键是既能避免不必要的复杂性,还不会妨碍在现有浏览器中使用。比如说,在HTML5中,如果我使用link元素链接到一个样式表,我说了rel=”stylesheet”,然后再说type=”text/css”,那就是重复自己了。对浏览器而言,我就是在重复自己。浏览器用不着同时看到这两个属性。浏览器只要看到rel=”stylesheet”就够了,因为它可以猜出来你要链接的是一个CSS样式表。所以就不用再指定type属性了。你不是已经说了这是一个样式表了嘛;不用再说第二次了。当然,愿意的话,你可以再说;如果你想包含type属性,请便。

同样地,如果你使用了script元素,你说type=”text/javascript”,浏览器差不多就知道是怎么回事了。对Web开发而言,你还使用其他的脚本语言吗?如果你真想用其他脚本语言,没人会阻拦你。但我要奉劝你一句,任何浏览器都不会支持你。

愿意的话,你可以添加一个type属性。不过,也可以什么都不写,浏览器自然会假设你在使用JavaScript。避免-不必要的-复杂性。

支持已有的内容

支持已有的内容。这一点非常重要,因为很多人都认为HTML5很新,很闪亮;它应该代表着未来发展的方向,应该把Web推向一个新的发展阶段。这就是HTML5,对吗?显然,我们都会考虑让Web的未来发展得更好,但他们则必须考虑过去。别忘了W3C这个工作组中有很多人代表的是浏览器厂商,他们肯定是要考虑支持已有内容的。只要你想构建一款浏览器,就必须记住这个原则:必须支持已有的内容。

下面我们就来看一个HTML5支持已有内容的例子。

这个例子展示了编写同样内容的四种不同方式。上面是一个img元素,下面是带一个属性的段落元素。四种写法唯一的不同点就是语法。把其中任何一段代码交给浏览器,浏览器都会生成相同的DOM树,没有任何问题。从浏览器的角度看,这四种写法没有区别。因而在HTML5中,你可以随意使用下列任何语法。

 

<img src=”foo” alt=”bar” />
<p>Hello world</p>

<img src=”foo” alt=”bar”>
<p>Hello world

<IMG SRC=”foo” ALT=”bar”>
<P>Hello world</P>

<img src=foo alt=bar>
<p>Hello world</p>

 

好了,看到这几段代码,恐怕有人会说“不对不对不对。其中只有一个是对的,另外三个——说不好。”不对,应该给属性值加引号!拜托,我们可是一直都给属性值加引号的!元素名大写对吗?这种做法10年不是就被抛弃了吗?

看到HTML5同时允许这些写法,我心里忍不住一阵阵想吐。我写了10年的XHTML 1.0,已经非常适应严格的语法了。但你必须明白,站在浏览器的角度上,这些写法实际上都是一样的。确实没有什么问题。

还有谁也感到不舒服了吗?有谁看到这些之后想“噢,这不是乱写嘛,这样做不对”?只有我这样想吗?还有别人吗?

但是,HTML5必须支持已经存在的内容,而已有的内容就是这个样子的。不是吗?根据伯斯塔尔法则,浏览器没有别的选择。

有人可能会说“这样不行。我觉得语言本身应该提供一种开关,让作者能够表明自己想做什么。”比如说,想使用某种特定的语法,像XHTML,而不是使用其他语法。我理解这些人的想法。但我不赞成在语言里设置开关。因为我们讨论的只是编码风格或者写作风格,跟哪种语法正确无关。对于像我们这样的专业人士,我认为可以使用lint工具(一种软件质量保证工具,或者说是一种更加严格的编译器。它不仅可以象普通编译器那样检查出一般的语法错误,还可以检查出那些虽然完全合乎语法要求,但很可能是潜在的、不易发现的错误),对其他技术我们不是也在使用lint工具嘛。

比如说对JavaScript使用lint工具。JavaScript同样也是比较混乱、不严谨的例子,但它非常强大,原因恰恰是它混乱、不严谨,而且有很多不同的编码方式。在JavaScript,你可以在每条语句末尾加上分号,但不是必需的,因为JavaScript会自动插入分号……是不是听起来有点不好接受?

正因为如此,才有了像JSlint这样的工具,在道格拉斯·克劳克福德(Douglas Crockford)的网站jslint.org上面。有个网页上写着“JSlint可能会伤害你的感情。”但这确实是个非常棒的工具,它可以把JavaScript代码变得完美无瑕。如果你通过JSlint运行JavaScript,它会告诉你“好,你的JavaScript代码有效,但写法不妥。你这种编码风格啊,我不喜欢。不赞成你这样写。这样写不好。”特别是对团队,对于要使用统一的编码风格的团队,JSlint是非常方便的工具。

我个人认为,不仅对团队来说,就算是你自己写代码,也要坚持一种语法风格。从浏览器解析的角度讲,不存在哪种语法比另一种更好的问题,但我认为,作为专业人士,我们必须能够自信地讲“这就是我的编码风格。”然而,我不认为语言里应该内置这种开关。你可以使用lint工具来统一编码风格。现在就来说说lint工具。大家可以登录htmllint.com,在其中运行你的HTML5文档,它会帮你检查属性值是否加了引号,元素是否小写,你还可以通过勾选复选框来设置其他检查项。

但这不意味着拒绝粗心大意的标记,做不做清理完全取决于你自己。我说过,因为浏览器必须支持已有的内容,HTML5自然也不能例外。归根结底还是伯斯塔尔法则。我们始终离不开伯斯塔尔法则。

解决现实的问题

HTML5的另一个设计原理是解决现实的问题。显而易见的是,解决各种问题的格式和规范已经比比皆是了,因此在我看来,这个原理其实是要解决理论问题,而非解决现实的问题。这条设计原理是要从理论上承认人们普遍存在的问题,消除敏感问题。

下面我来举个例子。相信这个例子有不少人都遇到过。假设我使用HTML 4或XHTML 1,页面中已经有了一块内容,我想给整块内容加个链接,怎么办?问题是这块内容里包含一个标题,一个段落,也许还有一张图片。如果我想给它们全部都可以点击,必须使用3个链接元素。于是,我得先把光标放在标题(比如说h2元素)中,写一个链接标签,然后再选中所有要包含到链接里面来的文本。接着,再把光标放在段落里,写一个链接标签,然后把段落中的文本放在链接里……

 

<h2><a href=”/path/to/resource”>Headline text</a></h2>
<p><a href=”/path/to/resource”>Paragraph text.</a></p>

 

在HTML5中,我只要简单地把所有内容都包装在一个链接元素中就行了。

 

<a href=”/path/to/resource”>
<h2>Headline text</h2>
<p>Paragraph text.</p>
</a>

 

没错,链接包含的都是块级元素,但现在我可以用一个元素包含它们。这样太好了。因为我碰到过类似的情形,必须给几个块级元素加上相同的链接,所有能这样写就太好了。为此,我就非常欢迎HTML5这个新标准。

它解决了一个现实的问题。我敢说在座不少朋友都曾遇到过这个问题。

那这到底解决的是什么问题呢?浏览器不必因此重新写代码来支持这种写法。这种写法其实早就已经存在于浏览器中了,因为早就有人这样写了,当然以前这样写是不合乎规范的。所以,说HTML5解决现实的问题,其本质还是“你都这样写了很多年了吧?现在我们把标准改了,允许你这样写了。”

求真务实

在所有设计原理中,这一条恐怕是最响亮的了——求真务实。不知道大家有没有在公司里开会时听到过这种口号:“开拓进取,求真务实。”实际上,除了作为企业的口号,它还是一条非常重要的设计原理,因为求真务实对于HTML的含义是:在解决那些令人头痛的问题之前,先看看人们为应对这些问题都想出了哪些办法。集中精力去理解这些“民间的”解决方案才是当务之急。

HTML5中新的语义元素就是遵循求真务实原理的反映。新增的元素不算多,谈不上无限的扩展性,但却不失为一件好事。尽管数量屈指可数,但意义却非同一般。这些新元素涉及头部(header)、脚部(footer)、分区(section)、文章(article)……,相信大家都不会觉得陌生。我的意思是说,即便你不使用HTML5,也应该熟悉这些称呼,这些都是你曾经使用过的类名,比如class=”header”/“head”/“heading”,或class=”footer”/“foot”。当然,也可能是ID,id=”header”,id=”footer”。这些不都是我们已经司空见惯了的嘛。

好,举个例子吧,假设你今天写了下面这个文档。

 

<body>
<div id=”header”>…</div>
<div id=”navigation”>…</div>
<div id=”main”>…</div>
<div id=”sidebar”>…</div>
<div id=”footer”>…</div>
</body>

 

这里有一个div使用了id=”header”,另一个div使用了id=”navigation”,……。怎么样,都轻车熟路了吧?在HTML5中,这些元素都可以换掉。说起新增的语义元素,它们价值的一方面可以这样来体现:“嘿,看啊,这样多好,用HTML5新增的元素可以把这些div都替换掉。”

 

<body>
<header>…</header>
<nav>…</nav>
<div id=”main”>…</div>
<aside>…</aside>
<footer>…</footer>
</body>

 

当然了,你可以这样做。在文档级别上使用这些元素没有问题。但是,假如新增这些元素的目的仅仅是为了取代原来的div,那就真有点多此一举了。

虽然在这个文档中,我们用这些新元素来替换的是ID,但在我个人看来,将它们作为类的替代品更有价值。为什么这么说呢?因为这些元素在一个页面中不止可以使用一次,而是可以使用多次。没错,你可以为文档添加一个头部(header),再添加一个脚部(footer);但文档中的每个分区(section)照样也都可以有一个头部和一个脚部。而每个分区里还可以嵌套另一个分区,被嵌套的分区仍然可以有自己的头部和脚部,是这样吧?

这四个新元素:section、article、aside和nav,之所以说它们强大,原因在于它们代表了一种新的内容模型,一种HTML中前所未有的内容模型——给内容分区。迄今为止,我们一直都在用div来组织页面中的内容,但与其他类似的元素一样,div本身并没有语义。但section、article、aside和nav实际上是在明确地告诉你——这一块就像文档中的另一个文档一样。位于这些元素中的任何内容,都可以拥有自己的概要、标题,自己的脚部。

其中最为通用的section,可以说是与内容最相关的一个。而article则是一种特殊的section。Aside呢,是一种特殊的section。最后,Nav也是一种特殊的section。

好,即便是现在,你照样可以使用div和类来描述页面中不同的部分,就像下面这样:

 

<div>
<h2>…</h2>
<div>…</div>
<div>

</div>
<div>…</div>
</div>

 

其中包含可能是有关内容作者的元数据,而下面会给出一些链接,差不多就这样。在HTML5中,我完全可以说这块内容就是一个文档,通过对内容分区,使用section或article或aside,我可以说“这一块完全是可以独立存在的。”因此,我当然可以使用header和footer。

 

<section>
<header><h1>…</h1></header>
<footer>…</footer>
<div>

</div>
<nav>…</nav>
</section>

 

请注意,即便是footer,也不一定非要出现在下面,不是吗?这几个元素,header、footer、aside、nav,最重要的是它们的语义;跟位置没有关系。一想到footer这个词,我们总会不由自主地想,“噢,应该放在下面。”同样,我们把aside想象成一个侧边栏。可是,如果你看一看规范,就会发现这些元素只跟内容有关。因此,放在footer中的内容也可以是署名,文章作者之类的,它只是你使用的一个元素。这个元素并没有说“必须把我放在文档或者分区的下面。”

这里,请注意,最重要的还不是我用几个新元素替换了原来的div加类,而是我把原来的H2换成了H1——震撼吧,我看到有人发抖了。我碰到过不少职业的Web开发人员,多年来他们一直认为规范里说一个文档中只能有一个H1。还有一些自诩为万能的SEO秘诀同样说要这样。很多SEO的技巧其实是很教条的。所谓教条,意思就是不相信数据。过去,这种教条表现为“不行,页面中包含两个以上的H1,你就会死掉的。”在HTML5中,只要你建立一个新的内容块,不管用section、article、aside、nav,还是别的元素,都可以在其中使用H1,而不必担心这个块里的标题在整个页面中应该排在什么级别;H2、H3,都没有问题。

这个变化太厉害了。想一想吧,这个变化对内容管理是革命性的。因为现在,你可以把每个内容分区想象一个独立的、能够从页面中拿出来的部分。此时,根据上下文不同,这个独立部分中的H1,在整个页面中没准会扮演H2或H3的角色——取决于它在文档中出现的位置。面对这个突如其来的变化,也许有人的脑子会暂时转不过弯来。不要紧,但我可以告诉你,我认为这才是HTML5中这些新语义标记的真正价值所在。换句话说,我们现在有了独立的元素了,这些元素中的标题级别可以重新定义。

我的文档中可能会包含一个分区,这个分区中可能会嵌套另一个分区,或者一篇文章,然后文章再嵌套分区,分区再嵌套文章、嵌套分区,文章再嵌套文章。而且每个分区和文章都可以拥有自己的H1到H6。从这个意义上讲,H元素真可谓“子子孙孙,无穷匮也”了。但是,在你在编写内容或者内容管理系统的时候,它们又都是独立的,完全独立的内容块。这才是真正的价值所在。

实际上,这个点子并不HTML5工作组拍脑门想出来的,也不是W3C最近才提出来的。下面这几句话摘自蒂姆·伯纳斯-李1991年的一封邮件,邮件是发给丹·康纳利(Dan Connolly)的。他在邮件中解释了对HTML的理解,他说:“你知道……知道我的想法,我认为H1、H2这样单调地排下去不好,我希望它成为一种可以嵌套的元素,或者说一个通用的H元素,我们可以在其中嵌套不同的层次。”但后来,我们没有看到通用的H元素,而是一直在使用H1和H2——那是因为我们一直在支持已有的内容。20年后的今天,这个理想终于实现了。

平稳退化

下一条原理大家应该都很熟悉了,那就是平稳退化。毕竟,我们已经遵守这条规则好多年了。渐进增强的另一面就是平稳退化。

有关HTML5遵循这条原理的例子,就是使用type属性增强表单。下面列出了可以为type属性指定的新值,有number、search、range,等等。

 

input type=”number”
input type=”search”
input type=”range”
input type=”email”
input type=”date”
input type=”url”

 

最关键的问题在于浏览器在看到这些新type值时会如何处理。现有的浏览器,不是将来的浏览器,现有的浏览器是无法理解这些新type值的。但在它们看到自己不理解的type值时,会将type的值解释为text。

无论你写的是input type=”foo”还是input type=”bar”,现有的任何浏览器都会说:“嗯,也许作者的意思是text。”因而,你从现在开始就可以使用这些新值,而且你也可以放心,那些不理解它们的浏览器会把新值看成type=”text”,而这真是一个浏览器实践平稳退化原理的好例子。

比如说,你现在输入了type=”number”。假设你需要一个输入数值的文本框。那么你可以把这个input的type属性设置为number,然后理解它的浏览器就会呈现一个可爱的小控件,像带小箭头图标的微调控件之类的。对吧?而在不理解它的浏览器中,你会看到一个文本框,一个你再熟悉不过的文本框。既然如此,为什么不能说输入type=”number”就会得到一个带小箭头图标的微调控件呢?

当然,你还可以设置最小和最大值属性,它们同样可以平稳退化。这是问题的关键。

再看input type=”search”。你也可以考虑一下这种输入框,因为这种输入框在Safari中会被呈现为一个系统级的搜索控件,右边还有一个点击即可清除搜索关键词的X。而在其他浏览器中,你得到的则是一个文本框,就像你写的是input type=”text”一样,也就是你已经非常熟悉的文本框。那为什么还不使用input type=”search”呢?它不会有什么副作用,没有,对不对?

HTML5还为输入元素增加了新的属性,比如placeholder(占位符)。有人不知道这个属性的用处吗,没有吧?没错,就是用于在文本框中预先放一些文本。不对,不是标签(label)——占位符和标签完全不是一回事。占位符就是文本框可以接受的示例内容,一般颜色是灰色的。只要你一点击文本框,它就消失了。如果你把已经输入的内容全部删除,然后单击了文本框外部,它又会出现。

使用JavaScript编写一些代码当然也可以实现这个功能,但HTML5只用一个placeholder属性就帮我们解决了问题。

当然,对于不支持这个属性的浏览器,你还是可以使用JavaScript来实现占位符功能。通过JavaScript来测试浏览器支不支持该属性也非常简单。如果支持,后退一步,把路让开,乐享其成即可。如果不支持,可以再让你的JavaScript来模拟这个功能。

现在,我不得不提到另一个话题了:HTML5对Flash。也许你早听说过了,或者在哪里看到了这方面的讨论。说实话,我一点也不明白。我搞不懂人们怎么会仅仅凭自己的推测来展开争论。

首先,他们所说的HTML5对Flash,并不是指的HTML5,也不是指的Flash。而是指HTML5的一个子集和Flash的一个子集。具体来说,他们指的是视频。因此,不管你在哪里听到别人说“HTML5对Flash”,那很可能说的只是HTML5视频对Flash视频。

其次,一说HTML5对Flash,就好像你必须得作出选择一样:你站在哪一边?实际上不是这样的。HTML5规范的设计能够让你做到鱼和熊掌兼得。

好,下面就来看看这个新的video元素;真是非常贴心的一个元素,而且设计又简单,又实用。一个开始的video元素,加一个结束的video元素,中间可以放后备内容。注意,是后备内容,不是保证可访问性的内容,是后备内容。下面就是针对不支持video元素的浏览器写的代码:

 

<video src=”movie.mp4″>
<!– 后备内容 –>
</video>

 

那么,在后备内容里面放些什么东西呢?好,你可以放Flash影片。这样,HTML5的视频与Flash的视频就可以协同起来了。你不用作出选择。

 

<video src=”movie.mp4″>
<object data=”movie.swf”>
<!– 后备内容 –>
</object>
</video>

 

当然,你的代码实际上并没有这么简单。因为这里我使用了H264,部分浏览器支持这种视频格式。但有的浏览器不支持。

对不起,请不要跟我谈视频格式,我一听就心烦。不是因为技术。技术倒无所谓,关键是会牵扯到一大堆专利还有律师、知识产权等等,这些都是Web的天敌,对我建网站一点好处都没有。

可你实际上要做的,仅仅就是把后备内容放在那而已,后备内容可以包含多种视频格式。如果愿意怕话,可以使用source元素而非src属性来指定不同的视频格式。

 

<video>
<source src=”movie.mp4″>
<source src=”movie.ogv”>
<object data=”movie.swf”>
<a href=”movie.mp4″>download</a>
</object>
</video>

 

上面的代码中包含了4个不同的层次。

1、如果浏览器支持video元素,也支持H264,没什么好说的,用第一个视频。

2、如果浏览器支持video元素,支持Ogg,那么用第二个视频。

3、如果浏览器不支持video元素,那么就要试试Flash影片了。

4、如果浏览器不支持video元素,也不支持Flash,我还给出了下载链接。

不错,一开始就能考虑这么周到很难得啊。有了这几个层次,已经够完善了。

总之,我是建议你各种技术要兼顾,无论是HTML5,还是Flash,一个也不能少。如果只使用video元素提供视频,难免搬起石头砸自己的脚,我个人认为。而如果只提供Flash影片,情况也好不到哪去,性质是一样的。所以还是应该两者兼顾。

为什么要兼顾这两种技术呢?假设你需要面向某些不支持Flash的手持设备——只是举个例子——提供视频,你当然希望手持设备的用户能够看到视频了,不是吗?

至于为什么要使用不同的格式,为什么Flash视频和音频如此成功,我想可以归结为另一个设计原理,即梅特卡夫定律(Metcalfe’s Law):

 

网络价值同网络用户数量的平方成正比。

 

梅特卡夫的这个定律虽然是针对电话网提出来的,但在很多领域里也是适用的。使用网络的用户越多,网络的价值也就越大。人人都上Facebook,还不是因为人人都上Facebook嘛。虽然Facebook真正的价值不在于此,但只有人人都上才会让它的变得如此有价值。

梅特卡夫定律也适用于传真机。如果只有一个人购买了传真机,当然没有什么用处。但如果其他人也陆续购买了传真机,那么他的投资会就得到回报。

当然,面对竞争性的视频格式和不同的编码方式,你感觉不到梅特卡夫定律的作用,我也很讨厌以不同的方式来编码视频,但只向浏览器发送用一种方式编码的视频是行不通的。而这也正是Flash在视频/音频领域如此成功的原因。你只要把Flash影片发送给浏览器就好了,然后安装了插件的浏览器都能正常播放。本质上讲,Flash利用了梅特卡夫定律。

最终用户优先

今天我要讲的最后一个设计原理,也是我个人最推崇的一个,但没有要展示的代码示例。这个原理更有哲学的味道,即最终用户优先。

这个设计原理本质上是一种解决冲突的机制。换句话说,当你面临一个要解决的问题时,如果W3C给出了一种解决方案,而WHATWG给出了另一种解决方案,一个人这么想,另一个人那么想……这时候,有人站出来说:“对这个问题我们这样来解决。”

 

一旦遇到冲突,最终用户优先,其次是作者,其次是实现者,其次标准制定者,最后才是理论上的完满。

 

理论上的完满,大致是指尽可能创建出最完美的格式。标准制定者,指的是工作组、W3C,等等。实现者,指的是浏览器厂商。作者,就是我们这些开发人员,对吧?看看我们在这个链条里面的位置多靠上啊!我们的地位仅次于最终用户——事情本来就该这个样子。用户是第一位的。而我们的声音在标准制定过程中也同样非常非常重要。

Hixie(即Ian Hickson, Acid2、Acid3的作者及维护者,HTML5、CSS 2.1规范的制定者)经常说,在有人建议了某个特性,而HTML5工作组为此争论不下时,如果有浏览器厂商说“我们不会支持这个特性,不会在我们的浏览器中实现这个特性”,那么这个特性就不会写进规范。因为即使是把特性写进规范,如果没有厂商实现,规范不过是一纸空文,对不对?实现者可以拒绝实现规范。

而根据最终用户优先的原理,我们在链条中的位置高于实现者,假如我们发现了规范中的某些地方有问题,我们想“这样规定我们不能同意,我们不支持实现这个特性”,那么就等于把相应的特性给否定了,规范里就得删除,因为我们的声音具有更高的权重。我觉得这样挺好!本质上是我们拥有了更大的发言权,对吧?我认为开发人员就应该拥有更多的发言权。

我觉得这应该是最重要的一条设计原理了,因为它承认了你的权利,无论是设计一种格式,还是设计软件,这条原理保证了你的发言权。而这条原理也正道出了事物运行的本质。难道还不够明显吗?用户的权利大于作者,作者的权利大于实现者,实现者的权利大于标准制定者。然而,反观其他规范,比如XHTML2,你就会发现完全相反的做法。把追求理论的完满放在第一位,而把用户——需要忍受严格错误处理带来的各种麻烦的用户——放在了链条的最底端。我并没有说这种做法就是错误的,但我认为这是一种完全不同的思维方式。

因此,我认为无论你做什么,不管是构建像HTML5这样的格式,还是构建一个网站,亦或一个内容管理系统,明确你的设计原理都至关重要。

 

软件,就像所有技术一样,具有天然的政治性。代码必然会反映作者的选择、偏见和期望。

 

下面我们讲一个例子。Drupal社区曾联系马克·博尔顿(Mark Boulton)和丽莎·雷贺特(Leisa Reichilt)设计Drupal的界面。他们计划遵循一些设计原理。为此,他们并没有纸上谈兵,而是经过了一段时间的思考和酝酿,提出指导将来工作的4个设计原理:

 

简化最常见的任务,让不常见的任务不至于太麻烦。

只为80%设计。

给内容创建者最大的权利。

默认设置智能化。

 

实际上,我在跟马克谈到这个问题时,马克说主要还是那两个,即“只为80%设计。给内容创建者最大的权利。”这就很不错了,至少它表明了立场,“我们认为内容创建者比这个项目中的任何人都重要。”在制定设计原理时,很多人花了很多时间都抓不住重点,因为他们想取悦所有人。关键在于我们不是要取悦所有人,而是要明确哪些人最重要。他们认为内容创建者是最重要的。

另一条设计原理,只为80%设计,其实是一条常见的设计原理,也是一种通用模式,即帕累托原理(Pareto principle)。

帕累托是意大利经济学家,他提出这个比例,80/20,说的是世界上20%的人口拥有80%的财富。这个比例又暗合了自然界各个领域的幂律分布现象。总之,无论你是编写软件,还是制造什么东西,都是一样的,即20%的努力可以触及80%的用例。最后20%的用例则需要付出80%甚至更多的努力。因此,有时候据此确定只为80%设计是很合理的,因为我们知道为此只要付出20%的努力即可。

再比如,微格式同样也利用了帕累托原理,只处理常见用例,而没有考虑少数情形。他们知道自己不会让所有人都满意;而他们的目标也不是让所有人都满意。他们遵循的设计原理很多,也都非常有价值,但最吸引人的莫过于下面这条了:

 

首先为人类设计,其次为机器设计。

 

同样,你我都会觉得这是一条再明显不过的道理,但现实中仍然有不少例子违反了这条原理:容易让机器理解(解析)比容易让用户理解更重要。

所以,我认为平常多看一看别人推崇的设计原理,有助于做好自己手头的工作。你可以把自己认为有道理的设计原理贴在墙上。当然,你可以维护一个URL,把自己认为有价值的设计原理分享出来,就像Mozilla基金会那样,对不对,以下是Mozilla的设计原理:

 

Internet作为一种公共资源,其运作效率取决于互通性(协议、数据格式、内容)、变革及全球范围内的协作。

基于透明社区的流程有助于增进协作、义务和信任。

 

我觉得像这样的设计原理都非常好。而有了设计原理,我认为才更有希望设计出真正有价值的产品。设计原理是Web发展背后的驱动力,也是通过HTML5反映出来的某种思维方式。我想,下面这条原理你绝对不会陌生:

 

大多数人的意见和运行的代码。[1

 

对不对?这句话经常在我脑际回响,它囊括了Web的真谛,触及了HTML5的灵魂。

也许我该把这条原理打印出来贴到办公室的墙上,让它时刻提醒我,这就是Web的设计原理:大多数人的意见和运行的代码。

我想,今天的演讲就到这里了。如果大家有什么想法可以在twitter上通过@adactio找到我。有时候我也会在自己的博客,adactio.com上写写有关这个主题的文章。最后,可能还要顺便给我自己做个广告,我刚出了一本书,希望大家关注。

非常感谢大家。[全文完]

 

给力2011— 清晨博客推荐20款WordPress博客必备插件

2011年,清晨博客给各位小博主推荐20款WordPress插件:
seo插件;数据备份管理插件;留言管理插件;投票插件;用户管理插件;投稿管理插件;手机访问插件;rss管理插件;广告管理插件;分享插件;安全管理插件;防采集插件。
1、All in One SEO Pack

很常用的一个SEO插件,详细的对网站进行SEO管理,方便搜索引擎更快的收录
2、Google XML Sitemaps
能够生产一个XML格式的sitemaps文件,方便Google搜索引擎的快速收录,随着WordPress文章的更新而随时更新。如果你使用Google网站管理工具,可以把这个sitemaps文件提交给Google方便Google收录更快捷。
WordPress留言管理插件。
3、WordPress 数据备份插件 WordPress Database Backup
WordPress博客数据备份插件,使用该插件可以实现在WordPress博客后台对数据进行备份而无需要专门登陆
phpmyadmin管理,同时可以对博客数据定时备份并通过邮箱接收备份数据

4、WP-RecentComments
WordPress博客自带的最新评论功能不怎么人性化,该插件是代替默认的显示最新评论功能的插件,扩展性强。


5、WordPress Thread Comment
评论回复插件,可以实现评论提交AJAX效果盖楼留言,可以自定义设置留言盖楼高度,评论或回复评论邮件通知等功能
6、WordPress 用户管理插件
Members
一个WordPress用户、角色和权限管理插件。通过这个插件,你可以编辑和删除指定的角色以及角色的权限,你
可以创建新角色,你可以设置什么样的权限可以查看哪些文章内容等等。
7、WordPress安全插件
Login LockDown插件

Login LockDown插件可以进一步增强了WordPress的安全性。它可以限制某一个IP段内重复登录的失败登录次数
。如果在某短时间内,同一IP段登录失败次数超过一定量,插件将会禁止该IP段的登录功能。这有效阻止了暴力
破解密码。插件功能:

WordPress导航菜单插件:

8、Breadcrumb Trail
面包屑导航插件。生成一个层级式的导航菜单,让访客更明确自己所在的页面位置。

9、WordPress添加文章签名档插件 Add Post URL
插件的本身在于对文章进行全面管理,对每一篇文章加入属于自己的专属信息等,或者是广告,或者是文字,或者作者信息等。

10、WordPress文章防采集插件 copyfeed
copyfeed可以给文章加入版权声明信息,还能加入独特的数字指纹,并通过内置的功能向各大搜索引擎获
取记录,检查你的feed是否给别人非法盗用或转载。

11、WordPress 最高访问 最受欢迎 最高留言插件

WordPress popular post state 一款日志调用插件,插件数据库内自定义两个表,

可以统计点击量,也可以统计留言量。调用所有时间热门日志、一天内热门日志、 七日内热门日志、三十日内热门日志等等。

插件支持侧边栏模式,也支持根据需要代码调用。

12、WordPress访客信息显示插件 Show Useragent

在WordPress评论处显示每个访客的UA信息,包括国籍,操作系统,浏览器,支持在后台审核评论时查看访客UA信息。

13、WordPress广告插件:

Post Layout 自定义广告类型,随意插入文章的任何位置,更方便的管理广告。

14、WordPress 投稿插件:

uCan Post 可以产生一个功能强大的投稿功能,管理用户投稿信息。

15、wordpress分享插件
shareList可以分享自己的文章到qqzone 人人 开心 新浪 豆瓣等等……

16、WordPress手机登陆面板管理插件;
WordPress Mobile Pack通过手机方法是不是不好看。它就是来解决这个问题了,插件创建人称测试了Every single mobile。能给手机访问网站的用户带来一种不同的体验。

17、WordPress投票插件:
wp-polls 是一款出色的投票管理系统插件,在WordPress投票插件中热度很高,它具有一个出色的功能就是能够在文章中嵌入投票选项,让文章表现的更加丰富。

18、WordPress评分插件GD Star Rating。

这个插件的效果比较漂亮。通过一串星星来现实投票结果,满分十分,分越高亮的星星越多。
19、WordPress缓存插件

WP Super Cache 插件主要功能在于提升博客的访问速度,对于数据库较大,同时在线人数较多网站很据作用。
20 WordPress rss /feed 管理插件

Ozh’ Better Feed 是一款出色的rss管理插件 能够自定义html管理,支持代码、预览模式,可以插入版权 广告等等。

 

360给个人站长的一些启示

在正式开始写文章之前,首先先申明本人跟360五任何关系,也并非所谓的水军。写这篇文章的目的只是想发发表下自己的观点,学习下别人的长处,最重要的是写一篇软文,大家懂的。

去年360与QQ为代表的电脑右下角大战孰是孰非我们就不讨论了,貌似今年还在继续ing中呢。下面观点纯属作者个人观点,未经过权威论证,大家可当成笑话来看。

产品,一个公司想要成功,产品是首先应该解决的问题。这道理很简单,就像你开一家商店,正式开始营业钱,货架上必须摆上东西。互联网也是相同的道理,腾讯的产品是QQ,百度的产品是百度搜索引擎。那么360的产品是什么呢?360的第一个产品就是360安全卫士,依靠这一个产品,迅速的占领了国内的防御软件市场,随后逐步推出了杀毒软件,压缩软件,手机卫士等玲琅满目的产品。

从中我们不难看出,360安全产品已经覆盖了方方面面,电脑安全-网上银行-常用工具。只要是一个网民,给人的感觉就是只要我们打开360网站,下载一些列的软件安装到自己的电脑中后,就没必要再去找同类软件进行安装了,让用户感觉到很是方便,套用别人的一句话,安全类软件,啥都用有了好的产品,服务更不上也是不行的,现在的竞争越来越激烈,不管是什么行业,都有大把的人在做。关于产品质量那是仁者见仁,智者见智。对于用户来说,基本上都是差不多的,你在吹嘘什么先进技术对于用户来说都是浮云,我们根本就不懂,我们需要的就是出现问题后,能有人帮助解决。在论坛上发一张帖子,有管理员去回复下,哪怕是忽悠我们一下都好,毕竟有人理睬我们了。关于这一点,我不得不说,360做的真的不错。在360的论坛上,随处看见管理员跟用户之间的交流。也许你会觉得是托,是不是这个问题我们还真的无从考证,这也不是这篇文章的重点。

从360的模式笔者得出了下面的结论,或者说是对于各位站长发展网站的建议。

一.360产品是从点到面,先做好一个,随后再推出其他的。我们优化网关关键词也应该采取同样的方法,先优化好一个词语,待词语取得良好的排名之后再进行其他的词语进行优化。如果360当初一出现就开发那么多产品出来,相信效果不一定有现在那么好。我们一起优化多个关键词不仅加大了我们优化的难度,更重要的是会影响拖慢我们网站排名的脚步。

二。关于360与QQ的斗争,很多的人会觉得是炒作,我们个人的网站也需要操作。在信息时代,出名做好的方式就是炒作了。这只是一个方向,具体的实施的方法就需要大家开动脑筋了。

三。产品覆盖面广,来浏览我们网站的用户都是想在我们的网站获得某些他们需要的信息。我们要充分考虑到不同用户的需求,不断丰富网站的内容,让用户对自己的网站产生依赖感,逐渐建立固定的用户群。

四。互动很重要,很多的网站都有评论系统,人都喜欢热闹的。有人说话了,其他的人才有想说话的欲望。没事的时候发动下自己的朋友或者自己建立几个ID去自己的网站上说说话,最好能带动其他用户参与进来,一旦把火点燃之后,你就可以抽身离开,坐山观虎斗了。总之一句话,一定要让用户看到自己的网站是有人来的。

做站难,想要网站有排名更是难上加难,学习别人的长处,结合自己的实际,充分发挥自己的才能,那么离成功也就更近了一步。

本文由www.gm06.com站长原创

 

WordPress 缓存插件性能对比

我想我应该收回之前文章 《如果要把网站做大,切忌 WordPress 的滥用》 的观点,虽然原生态的 WordPress 效率实在底下,但是 WordPress 提供了很多插件,国外服务器领域里也有很多开源的缓存软件,这几天在 Jerry 的帮忙下,萝卜网的服务器用上了 Varnish 缓存加速,现在每天轻松应付流量,系统的负载也不再升高,呵呵。这里贴一篇国外高手的文章,一些主流的 WordPress 缓存插件,以及和用上 Varnish 的 WordPress 性能的对比。

1、作者使用的插件下载以及版本号:

DB Cache (version 0.6)

DB Cache Reloaded (version 2.0.2)

W3 Total Cache (version 0.8.5.1)

WP Cache (version 2.1.2)

WP Super Cache (version 0.9.9)

WP Widget Cache (version 0.25.2)

WP File Cache(version 1.2.5)

WP Varnish (in beta)

WP Varnish ESI Widget (in beta)

2、生产环境:

Debian 3.1/Squeeze VPS

Linux Kernel 2.6.33

Single core of a Xen Virtualized Xeon X3220 (2.40ghz)

2gb RAM

CoW file is written on a Raid-10 System using 4x1tb 7200RPM Drives

Apache 2.2.14 mpm-prefork

PHP 5.3.1

WordPress 官方主题测试数据

Tests are performed from a Quadcore Xeon machine connected via 1000 Base T on the same switch and /24 as the VPS machine

3、测试使用的Bash代码:

wordpress

4、测试以下 URL 的 http_load:

http://example.com/

http://example.com/2010/03/hello-world/

http://example.com/2008/09/layout-test/

http://example.com/2008/04/simple-gallery-test/

http://example.com/2007/12/category-name-clash/

http://example.com/2007/12/test-with-enclosures/

http://example.com/2007/11/block-quotes/

http://example.com/2007/11/many-categories/

http://example.com/2007/11/many-tags/

http://example.com/2007/11/tags-a-and-c/

http://example.com/2007/11/tags-b-and-c/

http://example.com/2007/11/tags-a-and-b/

http://example.com/2007/11/tag-c/

http://example.com/2007/11/tag-b/

http://example.com/2007/11/tag-a/

http://example.com/2007/09/tags-a-b-c/

http://example.com/2007/09/raw-html-code/

http://example.com/2007/09/simple-markup-test/

http://example.com/2007/09/embedded-video/

http://example.com/2007/09/contributor-post-approved/

http://example.com/2007/09/one-comment/

http://example.com/2007/09/no-comments/

http://example.com/2007/09/many-trackbacks/

http://example.com/2007/09/one-trackback/

http://example.com/2007/09/comment-test/

http://example.com/2007/09/a-post-with-multiple-pages/

http://example.com/2007/09/lorem-ipsum/

http://example.com/2007/09/cat-c/

http://example.com/2007/09/cat-b/

http://example.com/2007/09/cat-a/

http://example.com/2007/09/cats-a-and-c/

5、最终性能对比:

Sorted in Ascending order in terms of higher overall performance

wordpress

6、总结:

Varnish 用来做缓存,因为是内存级别的,读取速度相当之快,所有其他的缓存插件都是浮云,唯一能媲美的是启用了Page Caching – Disk (Enhanced), Minify Caching – Alternative PHP Cache (APC), Database Caching – Alternative PHP Cache (APC)的 W3 Total Cache 插件。

萝卜网目前使用的方案是 Nginx (82端口) + Varnish (反向监听81)+ Nginx (再反向监听80),当然也可以尝试 Apache (82)+ Varnish(81) + Nginx (80),具体怎么配置就不是本文的讨论范围了。

至于为什么不用 Apache (81) + Nginx (80),因为 Nginx 用来做反向代理+缓存加速的话,是在硬盘读取的,而Varnish直接读取内存,速度明显加快,唯一头疼的就是太损耗内存,服务器8G的内存瞬间跑满,看来得花钱加大内存了 T_T

 

老鹰主机(Hawkhost)2011年3月份优惠码

编者按,HawkHost, 中文名老鹰主机,成立于2004年,提供共享主机(shared hosting), 转售主机(reseller hosting)和VPS主机(virtual private hosting),在达拉斯,西雅图和华盛顿均有服务器。

优惠码:march2011

优惠幅度:虚拟主机首次付款优惠40%

截止日期:2011.4.1

优惠码:rmarch2011

优惠幅度:Reseller主机优惠25%

截止日期:2010.4.1

优惠码:mar11dalvps30

优惠幅度:达拉斯的VPS优惠30%

截止日期:2010.4.1

HawkHost 官方网站:http://www.hawkhost.com

 

第 5 页,共 6 页« 最新...23456

Copyright © 2018 时光的脚注

Theme by Anders NorenUp ↑