SEO --- > 这是一个老的,有些过时确非常普遍,甚至每一个程序员都知道的关于搜索引擎优化的技术,所以,我只一笔带过。 **搜索时发生什么了?** - 用户输入查询内容 - 查询处理以及分词技术 - 确定搜索意图及返回相关、新鲜的内容 ![search-engine-arch](assets/article/chapter5/search-engine-arch.jpg) **为什么需要 SEO?** 这是一个有趣的问题,答案是``为网站带来更多的流量``。 ###爬虫与索引 我们先看看来自谷歌的爬虫工作的一点内容 > 抓取是 Googlebot 发现新网页并更新这些网页以将网页添加到 Google 索引中的过程。 > 我们使用许多计算机来获取(或"抓取")网站上的大量网页。执行获取任务的程序叫做 Googlebot(也被称为漫游器或信息采集软件)。Googlebot 使用算法来进行抓取:计算机程序会确定要抓取的网站、抓取频率以及从每个网站中获取的网页数量。 > Google 的抓取过程是根据网页网址的列表进行的,该列表是在之前进行的抓取过程中形成的,且随着网站管理员所提供的站点地图数据不断进行扩充。Googlebot 在访问每个网站时,会检测每个网页上的链接,并将这些链接添加到它要抓取的网页列表中。新建立的网站、对现有网站所进行的更改以及无效链接都会被记录下来,并用于更新 Google 索引。 也就是如原文所说: > 谷歌的爬虫(又或者说蜘蛛)能够抓取你整个网站索引的所有页。 **为什么谷歌上可以搜索整个互联网的内容**?因为,他解析并存储了。而更有意思的是,他会为同样的内容建立一个索引或者说分类,按照一定的相关性,针对于某个关键词的内容。 PageRank 对于一个网站来说是相当重要的,只是这个相比也比较复杂。包括其他网站链接向你的网站,以及流量,当然还有域名等等。 ###什么样的网站需要 SEO? 下图是我的博客的流量来源 ![What Site Need SEO](assets/article/chapter5/my-website-seo.jpg) 正常情况下除了像``腾讯``这类的``QQ空间``自我封闭的网站外都需要 SEO,或者不希望泄露一些用户隐私如``Facebook``、``人人``等等。 - 如果你和我的网站一样需要靠搜索带来流量 - 如果你的网站只有很少的用户访问,却有很多的内容。 - 如果你的网站为一个公司、企业工作以带来业务。 - 。。。 **SEO 与编程的不同之处?** SEO 与编程的最大不同之处在于: **编程的核心是技术,SEO 的核心是内容**。 内容才是 SEO 最重要的组成部分,这也就是腾讯复制不了的东西。 ###SEO 基础知识 **确保网站是可以被索引的** 一些常见的页面不能被访问的原因 - 隐藏在需要提交的表格中的链接 - 不能解析的 JavaScript 脚本中的链接 - Flash、Java 和其他插件中的链接 - PowerPoint 和 PDF 文件中的链接 - 指向被 meta Robtots 标签、rel="NoFollow" 和 robots.txt 屏蔽的页面的链接 - 页面上有上几百个链接 - frame(框架结构)和 iframe 里的链接 对于现在的网站来还有下面的原因,通过来说是因为内容是动态生成的,而不是静态的 - 网站通过 WebSocket 的方法渲染内容 - 使用诸如 Mustache 之类的 JS 模板引擎 **什么样的网页可以被索引** - 确保页面可以在没有 JavaScript 下能被渲染。对于现在 JavaScript 语言的使用越来越多的情况下,在使用 JS 模板引擎的时候也应该注意这样的问题。 - 在用户禁用了 JavaScript 的情况下,保证所有的链接和页面是可以访问的。 - 确保爬虫可以看到所有的内容。那些用 JS 动态加载出来的对于爬虫来说是不友好的 - 使用描述性的锚文本的网页 - 限制的页面上的链接数量。除去一些分类网站、导航网站之类有固定流量,要不容易被认为垃圾网站。 - 确保页面能被索引。有一指向它的 URL - URL 应该遵循最佳实践。如 blog/how-to-driver 有更好的可读性 **在正确的地方使用正确的关键词** - 把关键词放 URL 中 - 关键词应该是页面的标签 - 带有 H1 标签 - 图片文件名、ALT 属性带有关键词。 - 页面文字 - 加粗文字 - Descripiton 标签 ###内容 对于技术博客而言,内容才是最需要考虑的因素。 可以考虑一下这篇文章,虽然其主题是以 SEO 为主 [用户体验与网站内容](http://www.phodal.com/blog/user-experience-writing-web-content/) 不可忽略的一些因素是内容才是最优质的部分,没有内容一切 SEO 都是无意义的。 ####复制内容问题 一个以用户角度考虑的问题: **用户需要看到多元化的搜索结果** 所以对于搜索引擎来说,复制带来的结果: - 搜索引擎爬虫对每个网站都有设定的爬行预算,每一次爬行都只能爬行 trpgr 页面数 - 连向复制内容页面的链接也浪费了它们的链接权重。 - 没有一个搜索引擎详细解释他们的算法怎样选择显示页面的哪个版本。 于是上文说到的作者给了下面的这些建议: > 避免从网上复制的内容(除非你有很多其他的内容汇总,以使它看起来不同 - 我们做头条,对我们的产品页面的新闻片段的方式) 。这当然强烈适用于在自己的网站页面以及。内容重复可以混淆搜索引擎哪些页面是权威(它也可能会导致罚款,如果你只是复制粘贴别人的内容也行) ,然后你可以有你自己的网页互相竞争排名! > 如果你必须有重复的内容,利用相对=规范,让搜索引擎知道哪个 URL 是一个他们应该被视为权威。但是,如果你的页面是另一个在网络上找到一个副本?那么开始想出一些策略来增加更多的文字和信息来区分你的网页,因为这样重复的内容是决不可能得到好的排名。 ——待续。 ####保持更新 谷歌对于一个一直在更新的博客来说会有一个好的排名,当然只是相对的。 对于一个技术博客作者来说,一直更新的好处不仅可以让我们不断地学习更多的内容。也可以保持一个良好的习惯,而对于企业来说更是如此。如果我们每天去更新我们的博客,那么搜索引擎对于我们网站的收录也会变得越来越加频繁。那么,对于我们的排名及点击量来说也算是一个好事,当我们可以获得足够的排名靠前时,我们的 PR 值也在不断地提高。 更多内容可以参考:[Google Fresh Factor](http://www.seomoz.org/blog/google-fresh-factor) ####网站速度 > 谷歌曾表示在他们的算法页面加载速度问题,所以一定要确保你已经调整您的网站,都服从最佳做法,以使事情迅速 过去的一个月里,我试着提高自己的网站的速度,有一个相对好的速度,但是受限于``域名解析速度``以及 ``VPS``。 [网站速度分析与 traceroute ](http://www.phodal.com/blog/use-traceroute-analyse-person-homepage-speed/) [UX 与网站速度优化——博客速度优化小记 ](http://www.phodal.com/blog/ux-and-improve-website-load-speed/) [Nginx ngx_pagespeed nginx 前端优化模块编译](http://www.phodal.com/blog/nginx-with-ngx-pagespeed-module-improve-website-cache/) ####保持耐心 > 这是有道理的,如果你需要考虑谷歌机器人抓取最新的页面并处理和更新与新内容对应的索引的时间因素。 > 而这可能是相当长一段时间,尤其是当你正在处理 PB 级的内容时。 SEO 是一个长期的过程,很少有网站可以在短期内有一个很好的位置,除非是一个热门的网站,然而在它被发现之前也会经历这个过程。 ####流量 在某种意义上,这个是提高 PR 值,及网站流量的另外一个核心,除了内容以外的核心。 - 流量引导是 SEO 的基础部分。除非你有一个异常强大的品牌,不需要干什么就能吸引到流量。 - 流量引导永不停止。这是不间断营销网站的过程。 关于流量的内容有太多,而且当前没有一个好的方法获取流量,虽然在我的网站已经有了。 Links to Your Site Total links ``5,880`` > 同时引导更多的流量和更有利更相关的流量的带来的帮助一样多。如果你有你的内容的分销合作伙伴,或者你建立一个小工具,或其他任何人都会把流量引导回你的网站上 - 你可以通过确保各个环节都有最佳的关键字锚文本从而大大提高搜索的相关性。您还应该确保所有流量到您的网站指向你的主域名( http://www.yourdomain.com ,像 http://widget.yourdomain.com 不是一个主域名) 。另外,你要尽可能多的联系,以包含适当的替代文字。你的想法。 > 另外,也许不太明显的方式,建立链接(或者至少流量)是使用社交媒体 - 所以设置你的 Facebook ,Twitter 和谷歌,每当你有新的链接一定要分享。这些通道也可以作为一个有效的渠道,推动更多的流量到您的网站。 由社交渠道带来的流量在现在已经越来越重要了,对于一些以内容为主导而且处于发展初期的网站,可以迅速带来流量。一些更简单的办法就是交换链接,总之这个话题有些沉重,可能会带来一些负面的影响,如黑帽 SEO。。。。 **参考来源**: 《SEO 艺术》(The Art of SEO)