浅谈SEO的关键:中文分词[转]

2009年8月1日

搜索引擎技术中,中文分词对于影响搜索引擎结果排序有着至关重要的作用。我们在实际的搜索引擎优化中,为了避免很多主关键词的大量竞争,也会使用到中文分词技术来做SEO优化。举个简单的例子,假如我们需要优化一个内容是“轴承”的网页,那么想要这个关键词在搜索引擎中排名更好,那就是很难的一件事了。因为“轴承”这个关键词热度太高,所以想要通过SEO手 段去将其优化到搜索结果的首页是一件非常难的事。在这个时候我们经常会使用长尾关键词去优化这样的高热度关键词,也就是说,我们经常会优化一些例如“北京 轴承销售商”、“北京进口轴承”等这样的关键词。而想要把这样的关键词做到搜索结果的前列,对于中文分词技术的把握和对于关键词的布局,有很大的重要性。

中 文分词在中国已经是有很久的历史了,明朝末年有一位画家叫做徐渭(文长),据说因为他家过于贫困,根本没有粮食可吃,因此只好跑到亲戚朋友家“蹭饭”。一 次两次亲戚朋友不觉得什么,但是时间长了,就感觉很厌恶徐渭。终于有一天,亲戚忍无可忍,不顾外面下着春雨就想把徐渭赶出去,于是在墙上写了一行字,委婉 的下了逐客令:

“下雨天留客天留人不留”

徐 渭看到那行字以后,心里自然明白亲戚的意思。但是到了晚上亲戚回到家一看,徐渭居然又在饭桌前等候。主人很奇怪,就问徐渭:“你看到墙上的字了吗?”徐渭 笑笑:“看到了,但是没想到你这么好客,既然这样,我也不客气了,就继续住下去吧!免得你自责招待不周。”说完,指指墙上的字,主人一看,差点气晕过去, 原来,徐渭在这行字上加了几个标点符号,主人无奈,只好让徐渭继续留下。徐渭是这么写的:

“下雨天,留客天。留人不?留。”

中国的文字博大精深,不同的标点符号,不同的断句就代表着不同的意思。所以,曾经有一位Google的科学家说:“如果可以做好中文搜索引擎,那么我们就不怕任何语种的搜索引擎研究了。”

那么中文分词在搜索引擎优化中到底具有怎样的意义呢?分词对SEO的影响是多方面的,最重要的就是对长尾流量的影响。例如说我们常常见到很多很想做的长尾关键词,例如广州进口轴承销售,上海进口轴承销售等等,但我们通过前文对于SEO的了解可以知道,一个页面做关键词不要超过三个,因为超过三个就会分散了每个关键词的权重,反而一个都做不好。但如果我们想超过三个又不影响呢?那么我们这时候就需要利用中文分词来对关键词进行组合了,例如<title>进口轴承销售-上海-广州<title>。这样分出来的结果可能没有广州进口轴承销售或上海进口轴承销售的关键词来的直接,但用这样分词的办法却使到很多词都获得不错的效果。多个词排名在搜索引擎结果页的首位,总是要比一个关键词排名在第一位的覆盖面要广。久而久之,因为 广州+进口轴承销售、上海+进口轴承销售这些页面让搜索引擎知道你的页面和“进口轴承销售”这个关键词相关度很高,因此进口轴承销售这个主关键词的排名也会相对提高。

当然,我们上面举得例子是还没有完全对于关键词进行完全的拆分。下面我们就对中文分词做一个粗略的讨论。

最早的中文分词办法是由北京航天航空大学的梁南元教授提出的,一种基于“查字典”的分词办法。例如这个句子:“著名导演张艺谋说国庆节晚上将安排十万人到天安门联欢。”

用 “查字典” 的分词方法,我们要做的就是把整个句子读一遍,然后把字典里有的词都单独标示出来,当遇到复合词的时候(例如北京大学),就找到最长的词匹配。遇到不认识的字符串就分割成单个文字。根据这样的办法,我们以上的文字可以切分为:

“著名 | 导演 | 张艺谋 | 说  |  国庆节 | 晚上 | 将 | 安排 | 十万人 | 到 | 天安门  | 联欢”

这样的分词办法虽然说可以应付很多的句子,但是由于细分的太多,在真正搜索引擎使用的过程中,到底哪一个词才是重点就无法表述,从而搜索引擎搜索出的结果也不能达到最大的相关度。于是在80年 代,哈尔滨工业大学计算机博士生导师王晓龙博士提出了“最少词数”的分词理论,即为,一句话应该是分词最少的字符串,这样会更多的让搜索引擎更明白这句话 到底是什么意思。但是这样的办法虽然更好,新的问题却也显现了出来。例如,我们在做“二义性”关键词组的时候,就不能说最长的分割就是最好的结果。举个例 子,“吉利大学城书店”这个关键词正确的分词应该是“吉利 |  大学城  |  书店”而不是词典中的“吉利大学 | 城 | 书店 ”

目前,主流的分词办法有两种,一种是基于统计模型的文字处理,另外一种是基于字符串匹配的逆向最大匹配法。

基于统计模型的文字处理

从 形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成词 的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉字X、Y的 相邻共现概率。互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频 度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例 如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典 (常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词 典分词结合上下文识别生词、自动消除歧义的优点。(上文引自SEO专家论坛)

基于统计模型的文字处理,因为技术性比较高,而且只是使用在搜索引擎分词算法的过程中,如果学会,对于SEO的帮助会更大,各位可以加入我的SEO培训班进行深入讨论。这里更多的说一下基于字符串匹配的逆向最大匹配法。

一般来说,我们在SEO中使用最多的分词办法就是基于字符串匹配的逆向最大匹配法。这个办法其实很简单。我们以一个简单的例子来说明。

“瑞星一直以质量和服务开拓安全市场”。

如果这个句子我们以“查字典”的办法正向切分的话,就会切分成下面的句子。

“瑞\星\一直\以\质量\和服\务\开拓\安全\市场”

我们可以看到,正向切分出现了一个重大的错误“和服”,而“和服”这个关键词是日本的传统服饰,和这句话的意思根本没有任何关系,如果真的这样去分词的话,那么在真正搜索引擎索引的过程中,我们搜索“和服”也会出现这样的错误结果。

因此我们开始做逆向最大匹配法。从这句话的后面往前读(从右向左)

“瑞\星\一直\以\质量\和\服务\开拓\安全\市场”。

这个分词办法才是正确的。

对于中文分词还有很多的讨论,下一节我们接着说。

在搜索引擎运行的 机制中,有很多种中文分词的办法,例如上一篇文章中提到的正向最大匹配分词、逆向最大分析、基于统计的分词等。但是在实际的搜索引擎运行过程中,分词的办 法却没有这么简单了。因为搜索引擎不仅仅要去考虑到分词结果的正确性,还需要考虑到对于分不出来的词的处理。

首先我们来讨论分词结果的准确度,一般来说,搜索引擎是使用多种分词的方式构成一个混合分词方式来进行分词的,因为这样可以让词汇最大化的、更准确的分开。混合分词的原理是:先使用专业词典进行分词,之后再使用普通词库进行一次分词。以一个简单的例子来说明这个问题。

例如我们现在有这样一句话“电子邮件营销”如果我们的词库中有“电子邮件”这个关键词,那么就可能会被分成是“电子邮件/营销”,如果没有这个词的话,那么就有可能被分为:“电子\邮件\营销”这样我们就出现了一个问题,假如我们单纯的使用第一种分词方式和词库,那么我们如果单纯搜索“邮件”“营销”这样的关键词时,就找不到“电子邮件营销”这样的结果,同理,单纯的使用第二个词库,也找不到“电子邮件”这个词。

因此在这里我们就需要使用混合分词的办法了,我们拥有之上两个词库和两种以上的分词方法。同样的例子,如果我们加以综合,分词的结果就变成了下面的形式。

电子邮件营销=>电子邮件\邮件营销=>电子\邮件\营销

这样的分词方法,就可以帮助我们更多的获得准确的搜索结果

那么对于分不出来的词,搜索引擎又是如何操作的呢?

网络文化发展速度快的标志不仅仅是我们日益提高的硬件和网速,更多的是表现在新生词汇的诞生。那么新词刚刚出来的时候,搜索引擎并不知道怎么切分时,该怎么办呢?

例如前一段时间把百度百科推到风口浪尖的新词汇“草泥马”,这个新词的出现一定是百度所始料不及的,那么如果出现了下面的这样一句话,百度又是如何去分词的呢?

“草泥马是一种食草动物”

一般来说,搜索引擎遇到这样的关键词时,会采取一元分词+二元分词+混合分词+不分词的方式来解决这样的问题。如果是一元分词,那么这句话分出来的结果应该是:“草\泥\马\是\一种\食草\动物\”或者“草\泥\马\是\一种\食草动物\”或者“草\泥\马\是\一种\食\草\动物\”

但是显然,这样的结果如果我们单纯搜索“草泥马”这个关键词时,是不会准确的被认为是相关内容的。因此,继续使用二元分词的办法“草泥\泥马\是\一种\食草\动物”。有了这个分词方式以后,我们原来句子出现在索引结果中的概率就变大,但是这个依然不是最好的,于是搜索引擎还有第三种方式——干脆不分,以保持新词的完整性。

在经过了这一系列的分词程序后,实际分词的结果是如同下面这样的。

草泥\泥马\草泥马\是\一种\食草\食\草\动物\食草动物

OK ,我们现在已经知道了中文分词的一些办法,那么以上的两种分词办法对于我们的SEO有什么好处呢?

前文我们讨论过,掌握了中文分词技术,我们就可以让自己的网页有更多的长尾关键词,从而让更多的关键词可以排名在百度、Google的搜索结果前列,那么同上面的这两种分词方法,我们就可以根据更多的这样的分词理论去构建一个长尾的title,长尾的keywords等。让你的网站从更多的关键词中获得流量。

kevin 其他

Firefox 16个SEO 插件

2009年8月1日

Firefox跟WordPress一样,其魅力在于拥有无可限量的插件与扩展,只要你能想到的功能,就有人能够帮你实现。之前介绍了Wordpress SEO插件,今天介绍的是16款Firefox SEO相关插件,欢迎使用。

1. SEO for Firefox

seo-for-firefox

功 能强大。 可以显示PR,网站年龄,外链,Alexa,教育网链接等等一大堆 SEO 相关的资料。SEO for Firefox 可能是目前最强大的 Firefox SEO 插件了,由 SEObook 出品。 SEO for Firefox 功能非强强大,安装 SEO for Firefox 扩展后打开页面,会显示非常多的该网站的资料,如 PR 值,Delicious 上面的收藏数量, Technorati 反向链接情况,Alexa 排名,WhoIs 信息等几十个参数。

2. SeoQuake

seoquake

SeoQuake 曾被国内的站长称为 SEO 终极完美工具,功能也是非常之强大。安装 SeoQuake Firefox 扩展后可以显示 Google PR,Google,Yahoo 和 MSN 等搜索引擎的收录数量及反向链接等内容,而且具有很强的可定制性。

3. SEO Link Analysis

seo-link-analysis

SEO Analysis Tool 这个 Firefox SEO 插件可以在你使用 google 工具箱和 Yahoo! Site Explorer 的时候丰富链接的资料。例如,可以显示锚文本,反向链接是 nofollow 属性还是已经不存在了。

4. Rank Checker

rank-checker

Rank Checker 是 SeoBook 出品的另外一个 Firefox SEO 工具,这个 SEO 插件可以保存并跟踪任意一个网页在 Google,Yahoo 和 Live 三个搜索引擎里面的排名情况。因为这些结果都是保存在本地电脑上的,所以用户不用担心隐私等问题。

5. LinkDiagnosis Firefox Extension

link-diagnosis-firefox-extension

LinkDiagnosis Firefox 扩展可以让站长看到每一个反向链接的 PR 值,反向链接的使用的锚文本,最多使用的链接锚文本等。

6. Smart PageRank

smart-pagerank

Smart PageRank 是一个非常简单但是功能强大的 Firefox SEO 工具,可以显示当前你访问页面的 PR 值,alexa 排名,Whois 信息,反向链接的 PR 等。

7. RankQuest SEO Toolbar

rankquest

RankQuest SEO Toolbar Firefox 扩展可以让你一目了然的知道你的网站在 30 多个 SEO 工具里面的情况。

8. Quirk Search Status

search-status

SearchStatus 这个 Firefox 扩展可以在 Firefox 上显示很多 SEO 相关的数据,例如 Google PR 值, Alexa 排名,Compete 排名,moz 排名,Whois 信息,robos.txt 的链接地址,sitemap.xml 的链接地址等。

9. HTML Validator

html-validator

HTML Validator 这个插件不仅仅对于网页设计人员和开发人员非常有用,还是个非常有用的 SEO 工具。HTML Validator Firefox 扩展可以让你检测 HTML 代码中的错误,从而提高网站在搜索引擎中的排名。

10. SEOpen

seopen

Provides 提供了很多搜索引擎优化相关的数据,例如 google 里面的反向链接数量,Yahoo 里面的反向链接数量,Google PageRank 查询,http header 检测等。

11. Google Global Firefox Extension

google-global-firefox-extension

Google Global Firefox Extension 这个 FireFox 扩展可以允许你选择不同国家的 Google 自然搜索结果和付费搜索结果,对于所搜索引擎竞价排名非常有用。

12. Foxy SEO Tool

foxy-seo-tool

Foxy SEO Tool 是一款免费的,开源的 Firefox SEO 插件,网站主可以利用 Foxy SEO Tool 进行网络流量和页面分析。

13. Socialphile

socialphile

Socialphile Firefox 扩展可以让网站主搜索社会化新闻网站的结果,同时可以站长直接提交搜索结果到社会化新闻网站,目前仅支持 Digg.com,开发人员表示将会支持更多的社会化新闻媒体网站。

14. KGen

kgen

KGen Firefox SEO 扩展可以让你非常快速的指导一个网页上面密度最大的关键词是什么,对于网站主来统筹整个网页的关键词密度策略,或者与竞争对手的网页进行关键词密度分析非常有用。

15. Niche Watch Tool

niche-watch-tool

Niche Watch Firefox SEO 插件可以显示域名的反向链接数量,搜索引擎抓取数量,PageRank 值等等。

16. User Agent Switcher

user-agent-switcher

User Agent Switcher,一款非常有用的 Firefox SEO 扩展,用来伪装浏览器和操作系统的标识。

文章整理参考来源:

15+ Useful Firefox SEO Tools For Serious Bloggers And Web Designers

http://blog.csdn.net/phphot/archive/2009/07/16/4354330.aspx

Firefox 16个SEO 插件

http://www.alsong.info/funtwo/34.html

kevin 其他

PHP 性能优化技巧

2009年6月26日

Google 在 Google Code 制作了 “Let’s make the web faster” (让我们使得 Web 更快)的网站中,分享了一些如网页性能优化的技巧和教程以及工具,今天我就翻译一篇技巧文章:PHP 性能优化技巧,他说的5条技巧我都不知道。

1. 不要随便就复制变量

有时候为了使 PHP 代码更加整洁,一些 PHP 新手(包括我)会把预定义好的变量复制到一个名字更简短的变量中,其实这样做的结果是增加了一倍的内存消耗,只会使程序更加慢。试想一下,在下面的例子中,如果用户恶意插入 512KB 字节的文字到文本输入框中,这样就会导致 1MB 的内存被消耗!

BAD:

$description = $_POST['description'];
echo $description;GOOD:

echo $_POST['description'];2. 对字符串使用单引号

PHP 引擎允许使用单引号和双引号来封装字符串变量,但是这个是有很大的差别的!使用双引号的字符串告诉 PHP 引擎首先去读取字符串内容,查找其中的变量,并改为变量对应的值。一般来说字符串是没有变量的,所以使用双引号会导致性能不佳。最好是使用字符串连接而不是双引号字符串。

BAD:

$output = “This is a plain string”;GOOD:

$output = ‘This is a plain string’;BAD:

$type = “mixed”;
$output = “This is a $type string”;GOOD:

$type = ‘mixed’;
$output = ‘This is a ‘ . $type .’ string’;3. 使用 echo 函数来输出字符串

使用 echo() 函数来打印结果出了有更容易阅读之外,在下个例子中,你还可以看到有更好的性能。

BAD:

print($myVariable);GOOD:

echo $myVariable;4. 不要在 echo 中使用连接符

很多 PHP 程序员(有包括我)不知道在用 恶臭 输出多个变量的时候,其实可以使用逗号来分开的,而不必用字符串先把他们先连起来,如下面的第一个例子中,由于使用了连接符就会有性能问题,因为这样就会需要 PHP 引擎首先把所有的变量连接起来,然后在输出,而在第二个例子中,PHP 引擎就会按照循序输出他们。

BAD:

echo ‘Hello, my name is’ . $firstName . $lastName . ‘ and I live in ‘ . $city;GOOD:

echo ‘Hello, my name is’ , $firstName , $lastName , ‘ and I live in ‘ , $city;5. 使用 switch/case 代替 if/else

对于只有单个变量的判断,使用 switch/case 语句而不是 if/else 语句,会有更好的性能,并且代码更加容易阅读和维护。

BAD:

if($_POST['action'] == ‘add’) {
addUser();
} elseif ($_POST['action'] == ‘delete’) {
deleteUser();
} elseif ($_POST['action'] == ‘edit’) {
editUser();
} else {
defaultAction();
}
GOOD:

switch($_POST['action']) {
case ‘add’:
addUser();
break;
case ‘delete’:
deleteUser();
break;
case ‘edit’:
editUser();
break;
default:
defaultAction();
break;
}

西城百幕 工作文档

端午节及六一LOGO设计方案

2009年6月3日

2
2
3
logo_duanwu1(上图为最终选定方案)
logo_duanwu2
logo_duanwu
61

coke liu 视觉设计

五招加速网页响应时间

2009年5月31日

网页尽可能的快速加载对网站非常重要;用户希望快速的查看他们想要看的页面,假如你不能满足他们,他们就会另寻它处。在这篇文章中,你会看到五种为你的网页加速的简单而有效的技术的相关讨论。

Five Ways To Speed Up Page Response Times.

1. 使用Yslow概览与测量网站加载时间

在决定什么出问题之前,知道网站的加载时间是第一步。它也能让你知道你是否需要为网站加速进行更改。

在我们开始之前,如果你还没有安装YSlow, 请安装。他是Mozilla Firefox的一个扩展,你可从下面的链接找到它:

https://addons.mozilla.org/en-US/firefox/addon/5369

第一,让我们浏览Six Revisions网站,我们都使用相同的例子进行测试(仅需要在新的标签或者浏览器窗口中打开)。

在浏览器的有效叫,有里程表的一栏(如图1)。在其旁边,当网页完成加载以后,你会看到“YSlow”和数字。数字代表浏览器加载网站所花费的时间(以秒计)。我们希望这个数字保持尽可能低的水平。

Odometer.

图 1: YSlow图标和显示网页加载时间的里程表

多数情况下,导致网页加载时间长的一个或者一组原因如下:

太多的HTTP请求

非压缩的 (或未经缩小的) JavaScript文件

No expiration headers for静态图片文件

我们一会将要讨论这些。

为了fimilarize自己网站加载时间的表现,浏览一些网站。看看Google,facebook,和一些你喜欢的博客与网站。你会注意到网站利用越多的图片与js网页的响应时间越久。

YSlow的使用特点

除了测量它网页加载的速度, YSlow为您提供一些深入了解,如你可以为提高自己的网站性能做些什么,以及网站的负载性能的不足。

下面的图片是 ‘性能’ 标签 (如图 2)。 但你点击它,它会分级展示每个影响到加载时间与整体性能的领域的细节。

Performance tab.

图 2: 性能标签

在这个领域,最主观的选择是使用CDN (内容分发网络).CDN针对大型网站非常有效果。他们所作的事情是跨越遍及各个地区的服务器传播网站内容。当物理服务器越是接近用户加载一个网站,一个页面的速度越快速。因此本质上来说,使用CDN是从服务器上将内容分发到最接近的访问的页面用户旁。

Performance - All.

图 3: 性能标签使用字母(A, B, C, D, F) 表示等级以及当前等级(1-100)。

Aside from using a CDN (which can be costly) – everything else is doable.

等级领域

让我们贯穿每个等级因素,下面是每个等级领域的简短秒速,以及如何解决这些问题实现最佳的性能。

减少HTTP请求:当网页从服务器获取文件的时候便有HTTP请求产生。范围包括脚本,CSS文件,图片以及asynchroneous客户端/服务端请求 (Ajax和其他变化的技术)。这是提及性能时的关键处,但是只需费点体力便能很容易解决。例如,尽可能的合并脚本,CSS,以及图像,在用户的机器上缓存文件常常有帮助。

添加期限头部: 80% 的页面加载时间都于下载脚本,图片以及CSS有关。 多数情况下,这些元素在用户的机器中不会发生改变,你可以通过在.htaccess中添加代码缓存在用户本地机器中(我们会在文章的后面对如何操作进行讨论)。

Gzip 部件: Gziping或者压缩JS文件,图片,HTML文档,CSS文档等等。用户可以下载较小的文件版本,增加网页的加载速度。 这样可以降低服务器的消耗,但是解压缩部件也可能导致页面响应变慢,这取决于用户的浏览器。

把CSS放在顶端: 把CSS文件放在网站的顶端,可以是网站尽可能同时加载其他部件,如图像和文字。

把js放在底端: 把CSS放在文档的头部,仅需要在关闭《boby》前插入js.在这些脚本在后台加载的同时,用户先得到看似完整的页面。

避免使用CSS表达式: 我从来没有使用过CSS 表达式 (被称之为动态特性), 这仅是IE专有的一个增加编程概念(如控制/有条件的结构)的CSS特性,截止到IE8,三叉戟布局引擎(在IE中使用的)不再提供支持。反正使用他们没有一个好想法。在某种程度上,我会基于不同的条件使用PHP脚本加载不同的CSS样式规则,例如一个随机数,一天的时间,或者浏览器。

外部调用JS与CSS: 将JS和CSS文件放在外部文件中,浏览器缓存他们要比每次调用拥有更快的页面加载速度。

减少DNS查找: 只要用户在浏览器的地址栏中键入域名,浏览器总会执行DNS查找IP地址,网站拥越多的入口位置,必要的DNS查找也会越多。尽可能的保持较低的水平,平均60-100毫秒进行一次DNS查询。

缩小JS: 不同于一般的gzip压缩,缩小js文档是去除不必要的空格, tabs, 和其他跟中跟杨的选择字符,减少文件的总尺寸,较小的页面可以获得更快的加载速度,你可以使用 JSMIN来缩小JavaScript.

避免重定向:无论是服务器端头重定向,js重定向,或者HTML元素重定向。你的网站都会加载空白的页面的头,然后再加载新的一页,用户为了获得需要的页面花费越来越多的时间,所以要不惜一切代价避免这种情况。

去除重复的脚本: 浏览器加载相同的脚本会增加页面的加载时间,这是非常简单的数学问题,更多的文件等于更多的加载时间。仔细检查你的网站,确保你没有调用两次或三次jQuery或者其他的脚本。

Components tab.

图 4: 部件标签。

部件标签 (如图 4)可以洞察增加网站加载速度的效果。在这里,你可以看到当前文档加载需要的时间,如果这些文件被压缩,响应的时间,以及假如他们缓存在用户的机器中和什么时候缓存过期。这是对网站很好的考核,衡量其性能与速度优化情况。最后,统计资料标签(如图 4),它向我们展示了所有的HTTP请求,同时下载的文档,以及缓存的文件。Empty cache显示了浏览器需要下载的呈现页面的文件。Primed Cache是另一方面,显示了已经存在于用户浏览器缓存中的文件列表,从而节省了浏览器不必再次下载文件的请求。

Stats tab.

图 5: Stats tab.

2. 使用CSS精灵减少HTTP请求

CSS Sprites 可能是自从Tesla发明了电流以后最cool的事情。呃,我的意思是爱迪生。

嗯,不大,但是非常紧凑。

CSS sprites 可以通过合并你的css背景图片,减少页面向服务的HTTP请求,轻松的降低页面的加载时间。

许多教程只是教你如何使用CSS精灵制作导航,我要说的是使用它制作整个网站的用户界面。

首先,让我们快速浏览一下YouTube,看一看他们是如何使用CSS Sprites的(如图 6)。 你不能在这里看到YouTube的CSS Sprite:

master-vfl87445.png

YouTube screenshot of Master Sprite.

图 6: YouTube的 “主要的” CSS Sprite.

这是怎么做到的,使用CSS,YouTube设定了一个将这张图片作为背景(如上图)的类, 然后其他元素只需要通过css的背景位置属性background-position设定相应的类来使用这些图片。

让我们来试试,我们打算使用YouTube图片来制作一个实例。

在以下示例中,我们使YouTube标志显示在屏幕上。使用相同的使用相同的sprite类与相同的图标,制作一个简单的翻转图标。

以下为引用的内容:

<style>
.sprite {
  background:url(http://s.ytimg.com/yt/img/master-vfl87445.png);
}

#logo {
  width:100px;
  height:45px;
  background-position:0 0;
}
</style>

<div id="logo" class="sprite"> </div>

现在我们所作的是通过单一的HTTP请求满足所有的静态网站需求。这样可以大大降低网页加载时间。

当你使用sprites制作悬停翻转效果时图片更替看起来间隔时间非常短。不同于翻转状态时加载文件,留下大量的空白直到该文件完全被加载。

以下为引用的内容:

<style>
.sprite {
  background:url(http://s.ytimg.com/yt/img/master-vfl87445.png);
}
#logo {
  width:100px;
  height:45px;
  background-position:0 0;
}

#button {
  background-position:0 -355px;
  padding:5px 8px;
}

#button:hover{
  background-position:-25px -355px;
}

</style>

<div id="logo" class="sprite"> </div>

<a href="#" id="button" class="sprite"></a>

3. 先加载CSS最后加载JavaScript

某些站点,你根本无法避开所有的扰乱了你的功能的HTTP请求。

在这方面,以下几个建议:

在body上的《head》标签里加载CSS

在《/body》标签闭合前加载JavaScript 。

会发生什事情呢?网页在用户的机器上加载显示,因此他们的眼睛就开始扫描所提供的内同,这个时候JavaScript正好迎头赶上在后台进行加载。 i

提示:如果您不想移动JavaScript标记,你认为它会搞糟网站的方式工作,我建议使用 defer 属性。用法如下:

<script defer=’defer’>

4. 使用子域名并发下载

并行下载,当你增加文件下载。如果你有打开网页在页脚的状态栏,你会发现加载其他网站的时候,会同时对static.domain.com和c1.domain.com进行请求。

这是一个非常棒的优化负载性能的方法。虽然只是简单的食用子域名,内容在同一个服务器上,但是浏览器是当作独立的服务器进行对待。

进行这样的设定:

在服务器上创建3个子域名

把图片放在在每个子域名的一个文件夹内

在新建的子域名中替换网站图片的位置路径

现在使用JavaScript文件,不会超过两个并发。

5. Adding an Expires Header

一些网站非常丰富,即使使用上述的技术后,性能似乎还可以增加更多。

一个用户访问你的网站,产生一些必要的页面,图片,脚本等HTT请求。

当你使用了Expires Header,你可以在用户的本地机器对这些元素进行缓存,不仅提高了他们的访问速度,也节省了你的带宽。 Expires header可以在所有的图片,脚本与css上使用。

只需要在你的网站根目录.htaccess文件中加入一行代码就可以轻松做到。(假如你没有,可以用文本编辑器创建一个,存为.htaccess,然后上传到根目录中。)

下面的.htaccess.为ico, .pfd, .flv (Flash类型文件), .jpg, .png等设置了2010到期的遥远的期限。

<FilesMatch “\.(ico|pdf|flv|jpg|jpeg|png|gif|js|CSS|swf)$”>
  Header set Expires “Thu, 15 Apr 2010 20:00:00 GMT”
</FilesMatch>

请注意:如果设定过于遥远的expires header,你更新文件需要重新命名(version it) 否则使用缓存的用户将无法看到更新。

例如,如果你拥有一个avaScript文件需要更新, 使用版本号码然后更新所有的旧版本文件 (即. javascriptfile-1.0.js, javascriptfile-1.1.js)

西城百幕 其他

百度site不代表真实结果 网页数是估算值

2009年5月26日

有网友表示今天开始在百度site自己的站的时候发百度开始重视站长,现SITE一下已经开始出现提示称其找到的相关网页数是估算值,不代表真实结果数,仅供参考。

 

百度直接搜索网址后出现类似雅虎搜索的反向链接的功能

据小编观察其搜索帮助也增加了对SITE以及给站长们的小意见以下摘录来自百度帮助:

给站长的建站建议:为每个网页添加合适的标题,如果是网站首页,则标题建议使用站点名称或者站点代表的公司、机构名称;其余的内容页面,标题建议做成与正文内容的提炼和概括,这可以让您的潜在用户通过搜索引擎结果中的标题快速访问到您的页面。

充分利用网站首页或者频道首页的 description 标签,提供此网页内容的概括说明,形式为《meta name=“description” content=“此网页内容的概括说明” /》,这将帮助用户和搜索引擎加强对你的网站和网页的理解。

网站应该有明晰的导航和层次结构,网站上重要的网页,应该能从网站比较浅层的位置找到,确保每个页面都可以通过至少一个文本链接到达。

尽量使用文字而不是flash、Javascript等来显示重要的内容或链接,百度暂时无法识别Flash、Javascript中的内容,这部分内容可能无法在百度搜索得到;仅在flash、Javascript中包含链接指向的网页,百度可能无法收录。

尽量少使用frame和iframe框架结构,通过iframe显示的内容可能会被百度丢弃。

如果网站采用动态网页,减少参数的数量和控制参数的长度将有利于收录。

网站改版或者网站内重要页面链接发生变动时,应该将改版前的页面301永久重定向到改版后的页面。

网站更换域名,应该将旧域名的所有页面301永久重定向到新域名上对应的页面。

只有当搜索引擎、站长、互联网用户之间,能有一种默契的利益均衡,这个行业才会顺畅发展。竭泽而渔式的网站建设,只会使您与用户、与搜索引擎越来越远。搜索引擎与站长之间,宜和谐发展,共同拥抱美好的愿景。

以下是我们给出的一些网站质量方面的建议:

网站的内容应该是面向用户的,搜索引擎也只是网站的一个普通访客,放置任何用户不可见、或者欺骗用户的内容,都可能被搜索引擎当做作弊行为,这些行为包括但不仅限于:在网页中加入隐藏文字或隐藏链接;在网页中加入与网页内容不相关的关键词;具有欺骗性跳转或重定向;专门针对搜索引擎制作桥页;针对搜索引擎利用程序生成的内容;具有大量重复无价值内容;充斥大量恶意广告或恶意代码等。

百度更喜欢独特的原创内容,如果您的站点内容只是从各处采集复制而成,很可能不会被百度收录。

谨慎设置您的友情链接,如果您网站上的友情链接,多是指向一些垃圾站点,那么您的站点可能会受到一些负面影响。

谨慎加入频道共建、内容联盟等不能产生或很少产生原创内容的计划,除非您能为内容联盟创造原创的内容。

百度会尽量收录提供不同信息的网页,如果您网站上相同的内容可以通过不同形式展现(如论坛的简版页面、打印页),可以使用robots.txt禁止spider抓取您不想向用户展现的形式,这也有助于节省您的带宽。

西城百幕 其他

当设计师遇上前端开发

2009年5月3日
作为互联网产品设计师,在和前端开发人员沟通时你是否常常会听到这样的声音:
 
—— “大姐,给点专业精神好不好,这个表格是自适应的,你这样设计页面不好扩展啊…”
——“用ajax不是不行,不过你要事前给我说嘛,你不说我怎么知道呢,你说了我就知道了嘛…”
 
面对这些回答,除了欲哭无泪,你有没有想过是什么原因导致出现这样沟通偏差,有没有解决的办法呢?设计师需要了解哪些知识才能和前端开发人员来更好的合作呢?
 
首先得从这两者之间都有哪些不同说起。我认为最主要原因在于设计师和前端开发在部门中不同的职责划分。通常情况下,产品设计师的产出物多是线框图(wireframe),视觉设计稿(mockup)等,前端负责编写HTML,CSS等代码(demo),有时还会根据需要编写程序代码(如 JSP/ASP/PHP/Rails),光看这些分工,就知道不同的角色对产品的理解和着重点是截然不同的。
 
按照正常的项目流程,设计团队通常需要先设计出界面mockup或demo(HTML/CSS),接着开发人员才开始正式编写代码。然而多数情况下为了保证项目进度,需要开发人员和设计师在项目前期就介入进来,不同的是,开发人员多是审核通过项目计划书(PRD)和原型评审,她们更关注于技术可实现性;而设计师更倾向理解产品经理的项目需求以及通过什么样方式来解决需求从而达到提升用户体验的目的,她们更关注创意的可行性。

 

更令人纠结的是前端开发对“界面元素”和“交互动作”的理解和设计师有很大不同。统一的界面元素对网站的前端架构也会很有好处,他们更关注代码的可重用性。 一方面是CSS:前端开发要实现设计师(或者自己引以为自豪)的界面设计,如果新页面的设计和原先页面中相同功能元素的设计有出入,哪怕是一点出入,都有可能带来很多重复的工作,将CSS文件变得越来越臃肿。另一方面是JavaScript:对于很多应用型网站,会有很多需要JavaScript的页面交互元素。这些交互元素的视觉或者行为设计与之前的有出入,也会让前端工程师为了既保证代码的健壮性来方便后端工程师的开发,又为了实现一些设计上的差别而对现有代码修修补补忙得不可开交,最可怕的是最终淹没于bug的海洋…而交互设计师的侧重点并不在程序的编码实现,而注重于用户如何最好地与系统交互操作,在设计中重点需要考虑的是界面元素的易用性:比如他们会考虑到并非每个用户都是计算机的熟练用户,面对隐藏的层和特殊设计的菜单可能会抓瞎,用户不见得能明白双击左键能自动滚屏或者怎样能让自动滚屏停下来,直接看最下面的结果?总之,设计师(完美主义者更甚)会不断完善产品,来满足更好的用户体验。
 
那么设计师怎样来解决这些问题呢?我觉得最重要的就是“沟通”,这是最根本的解决办法。在原型设计前期就要针对自己想法的询问前端开发在技术上的可行性,在界面设计过程中会有很多精确到像素级的标准,同样要和他们沟通了解代码的实现方式,不然很有可能做无用功。在提交界面设计之后,交互设计师也要主动出击,不定时的去关注demo的实现效果(mockup和demo多多少少存在不一致,在后期需要跟进;另外涉及到复杂的交互方式前端很可能会忘记或者搞混,也需要不断的去核查)。另外建立标准的文档管理和设计规范也很重要,好在我们开始建立设计规范和标准(淘斯基和TPL 模式库)的文档管理方法(SVN),包括:
  • 制定文件命名标准
  • 设定文件统一路径
  • 保存原始创作文件(例如PSD、Fla源文件)
  • 最终完成文件(经过产品经理认可的文件)
  • 视觉模式库和与其对应的代码模式库
当然,前端都很忙的,经常去“骚扰”他们会被鄙视的。跟他们沟通也需要技巧和一些基础认识,我总结了以下几点需要谨记:
  1. 网站的页面是动态的。photoshop呈现的是静态的东西,而网站页面是动态的展现内容、布局和交互。设计师过多关注用户体验层面,很难对所有的细节做到面面俱到。而前端(包括开发)需要照顾到所有的功能点涉及到的页面,因此在前期要考虑的尽量周全,别让别人帮我们收拾烂摊子。
  2. 关注新技术。网页设计缺少技术支持永远只是艺术。设计师必须经常关注新的技术和交互方式,这样才能在设计的时候提供多种解决方案,才能权衡利弊找到最优化的方案。
  3. 界面元素的标准化和统一。前端关注代码的可重用性,设计师关注新创意。因此在设计前期就要考虑哪些元素和交互方式既可以满足用户体验又能够被重复使用,以此来提高效率。
  4. 团队合作很重要。设计师很容易沉浸在自己的小世界里不能自拔,这是我们经常犯的通病。“沟通”是团队合作的关键,一切皆在沟通。
  5. 相信自己。前端通常出于不同的原因对一些交互方式可行性做出判断,比如代码复杂程度,技术可实现性等等。好的设计师需要有一些超前意识和冒险精神,当他们受 新技术的激发,认为它能够大大提升用户体验的时候,就需要把它当作挑战来实现。在对技术的深入了解后去说服前端一起努力实现。
好了,这些血和泪的经验是我工作一段时间慢慢总结的,如果你有更多的方法,希望能一起分享。

西城百幕 前端技术

什么是团队?

2009年4月13日

团队是什么?这是一个问题。

记得毕业找工作时,每个公司都讲究leadership,都讲究teamwork。基本每个大公司的面试都有一轮Access Centre的面试,6-10人做一个group discussion,然后推举一个人做presentation。那个时候的感觉就是,要脱颖而出,就要有思路,能够带领其他人去思考,同时能够把众人的意见撮合成一个结果。

我依然在学校里记得管理的那个广告创意团队,每个人都有不同的天赋。aokao善于设计,LL善于平面,ZYY善于“起哄”……那个时候,作为leader就是要有清晰的思路,完整的思路,去引导成员去思考。

工作了,开始真正面对生意上的压力,老板的压力,公司的压力,客户的压力。每件事情似乎都要迅速做出决策,每个决策似乎都关系着自己的职业发展。这里的leader需要更多素质。工作不久,我已经跟过两个老板。一个是男的,一个是女的。男老板对我来讲更像一个coach,不断地激励我,不断地提醒我,教我使用公司的流程,教我学会应付上面的压力。每当我犯了低级错误,他都会帮我顶。男老板只看宏观的,只要方向没有错误,他更愿意给我发挥的空间。而女老板则更像一个指挥官,她要求下级必须服从上级的命令,上级给出的指令必须严格操作,不需要下级有太多的思考。甚至,希望下级去实验上级的想法。

我记得HBR有一篇专门讨论leadership的文章,同时the apprentice里的Trump也在不断教育观众什么才是leadership。对我而言,我更喜欢的leadership是coach + commander式。商业上的决策,有些是火速但短期的,有些是重要但长期的。对于前者,leader需要给staff一个严格的指令,而且必须完美执行。对于后者,leader更应该给staff一些思考和发挥的空间。

Wharton有一篇文章,写关于“最佳团队规模”,很有意思,在此分享一下。

 

在体育界,各个运动队上场的队员数量都很明确:一支篮球队需要5个人,棒球队9个人,足球队11个人。但在工作场所,随着团队合作在不断扩大且复杂化的组织中日益普遍,要确定每支团队的最佳人数则是无章可循。

早在1861年,法国农业工程师马克西米利安·林格尔曼就发现拉绳子的人越多,尽管总体拉力增加,但每个成员施加的平均拉力减小,这与团队合作时成员更卖力的传统理论相悖。林格尔曼将其归因于当时所谓的“社会惰性”,即一个群体或团队往往会隐藏缺少个人努力的现象。

究竟多少人组成的团队才能实现最高的整体效率?有人认为,4~6人才能实现最高的团队效率,那每个团队若是有5~6人,又会如何?大型团队是不是因为具有“社会惰性”且缺乏协作而土崩瓦解?

 

团队首要不考虑规模

沃顿商学院管理学教授缪勒的重点研究领域之一是团队规模,但她认为,在组建一支有效团队时,规模并不一定是首先要考虑的事。

缪勒说:“第一,搞清楚团队即将承担何种任务很重要。对此问题的回复将提示你想聘用什么样的员工以及寻求何种类型的技能,其中有一项就是所需的协调程度。相互协调依赖很重要,它是你衡量人际关系是否融洽的标准之一。如果是销售团队,那只有在最后才能实现真正的协调。因为它全是单个个体的行为,人与人之间不存在相互依赖。”

“第二,要考虑团队将如何构成?人们在行动中需要运用哪些技能?这包括从工作方式到个人风格到知识基础等,要确保这一切与任务相适合。”如果是盖房子,你需要的是泥瓦匠,而要编写软件,则必须选择软件工程师。

“第三,你才需要考虑团队规模。”

沃顿商学院管理学教授克莱因认为,对于团队而言,人数是很重要的。“如果你们是2个成员,那是一个团队还是二元对等体?若是3个人,你会有机会进行权力斗争,比如二对一的角力。”

有些观点认为3人团队与2人团队截然不同,还有人认为偶数团队和奇数团队也有差异。事实上,当你们的团队达到8或9人以上时,你会发现它臃肿麻烦,派系丛生。

缪勒说:“在规模大于5个人后,就会显露出‘社会惰性’,人们在团队中的拉力发生收益递减,除非承担强制性任务。有人开始得过且过,做一天和尚撞一天钟。”

 

数字6刚好

虽然对最佳团队规模的研究还没有明确结论,但是它应该是在5~12个人之间,也有人说5~9个人最妥当,而且最佳团队规模的数字为6才是刚刚好。

沃顿商学院领导力研究项目主任伊万·维滕贝格强调说,“团队规模并不一定是人们立即考虑的问题,但它确实很重要。在职场,人们一直强调一个团队内5~6个人是最适当的,因为这个数字可以让每个人都能充分发挥自己的才能。”

维滕贝格补充说,卓越的团队不仅仅取决于最佳规模。比如,沃顿为每个团队分配了5~6个MBA学生。“我们不仅仅是分配那些人。我们必须确认他们都可以有效工作。”沃顿商学院将所有800名学生带到纽约州北部的森林中露营,开展团队学习计划,用2天时间组建团队和建立彼此的信赖,而6个人的团队表现得更有效率一些。

缪勒的研究似乎也证实了维滕贝格的观点,“如果你打扫体育场,那就没有限制;30个人打扫的速度总比5个人快。但如果公司处理的是协调任务和激励事宜,那么6个人刚合适。”在她的研究中发现,组织规模超过5个人后,每个人都开始寻找组建自己的小圈子,5人或5人以上的组织里更难管理。而为了应付日益复杂的工作,缪勒将最佳团队规模的数字定义为上限6。

由于有研究显示经理人往往会使团队出现冗员,那么理解团队越大个人表现越差的原因,可能会成为实施成功管理策略的关键所在。此外,个人绩效缺失与其说与协作行为有关,不如说与个体间彼此建立良好友谊来提升个人绩效有密切关系。

 

多样化不利团结

当然,团队绩效随着人数增加边际效益递减并不仅仅与规模有关,性别、种族和年龄的种种差异也会导致冲突,降低团队整体效率。

克莱因说:“人以群分,人们总喜欢和自己相似的人来往,所以多样化不利于团结。当然,从另一个方面来看,多样化是有利的,因为它激发了更多的思想、更多的角度和更多的创新,从而能得出更好的解决方案。但是,在时间紧迫且公开交流和辩论的机会有限时,拥有相似心智模型的团队成员可以预见到彼此的反应,达成有效协作。”

沃顿商学院管理学罗思巴德教授也有类似的理论,她称之为“少数群体”——也就是一颗老鼠屎坏了一锅汤。“少数群体看起来威胁不大,但却持不同见解,可以让群体的其他人员心烦意乱,导致整个团队鸡犬不宁。”

因此,对于团队领袖而言,最重要的素质是情绪稳定。如果有人神经兮兮,容易激动不安,整天忧心忡忡,脾气又很暴躁,这对团队没有任何好处。

另一方面,懂得人际交流重要性的团队比倚赖电子通讯的团队更为成功。电子邮件是可怕的媒体?——它无法很好地传达讽刺或情感,还可能导致误解。面对面地与人交流非常重要,效果迥然不同。

高绩效的团队确实很难组建,人们该如何行动呢?缪勒总结到,“你要回归到基本问题。这个团队有明确目标吗?团队成员是否各得其所呢?团队任务集中吗?其中目标模糊不清是大忌;另一个禁忌是领导者难以掌控大局,无法组织整个过程;第三,制定团队目标时不可独断专行。任务必须具有一定的意义,人们才会愿意不辞劳苦地为之奔忙。”

转载自:http://blog.sina.com.cn/s/blog_49e18c1a010008jb.html

西城百幕 团队故事

网站友情链接规范的七条建议

2009年4月11日

友情链接是网站优化工作中一个不可缺少的一部分,很多网站的的关键词排名也都是告外链指向来提高的,现根据平时工作的经验总结了一些友情链接的规范,分享给大家以作参考。

1、同行业站点优先或同城站点优先
2、百度/google收录正常,快照日期一周以内的
3、google PR值相关,有上升潜力的正规新站也可考虑
4、对方站点内容键康,无非法网站的链接
5、链接必需是有效的(非js,iframe,noflow)
6、链接要求首页文字链接,不做内页链接(根据自己的情况而定,一般首页对首页,内页对内页)
7、每周对自己管理的站点链接回访一次,并记录在案,及时删除不正常的站点

本文首发于盒饭网志,转载请注明出处!

小老好 前端技术

共勉 – 秦风·无衣

2009年3月24日

  出自《诗经》

  原文:

  岂曰无衣?与子同袍。王于兴师,修我戈矛。与子同仇!

  岂曰无衣?与子同泽。王于兴师,修我矛戟。与子偕作!

  岂曰无衣?与子同裳。王于兴师,修我甲兵。与子偕行!

  翻译:

  怎能说没有衣裳?我愿和你同披一件战袍。天子让我们出兵打仗,且修好我们的戈与矛。我们面对的是共同的敌人!

  怎能说没有衣裳?我愿和你同穿一件汗衣。天子让我们出兵打仗,且修好我们的矛与戟。我愿与你一同战斗!

  怎能说没有衣裳?我愿和你同穿一件下裳。天子让我们出兵打仗,且修好我们的盔甲兵器。我愿与你一同前进!

西城百幕 其他