似乎由于受这篇文章的影响 http://katemats.com/what-every-programmer-should-know-about-seo/ 于是我也觉得我应该写一个每一个程序猿必知之SEO。作为一个擅长前端兼SEO的设计师。

搜索引擎是如何工作的

假设你有时间,能够读一下谷歌的框架:

http://infolab.stanford.edu/~backrub/google.html

这是一个老的,有些过时纸。但非常平易近人,甚至在我们中间的非白皮书的读者图标微笑什么每一个程序猿都应该知道的关于搜索引擎优化和他们绝对概念的解释更具体,我仅仅提一笔带过。

搜索时发生什么了

  • 用户输入查询内容
  • 查询处理以及分词技术
  • 确定搜索意图及返回相关、新奇的内容

为什么须要SEO

这是一个有趣的问题。答案总会来源于为站点带来很多其它的流量

爬虫与索引

我们先看看来自谷歌的爬虫工作的一点内容

抓取是 Googlebot 发现新网页并更新这些网页以将网页加入到 Google 索引中的过程。

我们使用很多计算机来获取(或"抓取")站点上的大量网页。运行获取任务的程序叫做 Googlebot(也被称为漫游器或信息採集软件)。

Googlebot 使用算法来进行抓取:计算机程序会确定要抓取的站点、抓取频率以及从每一个站点中获取的网页数量。

Google 的抓取过程是依据网页网址的列表进行的,该列表是在之前进行的抓取过程中形成的,且随着站点管理员所提供的站点地图数据不断进行扩充。Googlebot 在訪问每一个站点时,会检測每一个网页上的链接,并将这些链接加入到它要抓取的网页列表中。新建立的站点、对现有站点所进行的更改以及无效链接都会被记录下 来,并用于更新 Google 索引。

也就是如原文所说:

谷歌的爬虫(又或者说蛛蛛)能够抓取你整个站点索引的全部页。

为什么谷歌上能够搜索整个互联网的内容?由于,他解析并存储了。

而更有意思的是,他会为相同的内容建立一个索引或者说分类。依照一定的相关性。针对于某个关键词的内容。

PageRank对于一个站点来说是相当重要的,仅仅是这个相比也比較复杂。包括其它站点链接向你的站点,以及流量,当然还有域名等等。

什么样的站点须要SEO?

下图是我的博客的流量来源

正常情况下除了像腾讯这类的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动态载入出来的对于爬虫来说是不友好的。
  • 使用描写叙述性的锚文本的网页。
  • 限制的页面上的链接数量。除去一些分类站点、导航站点之类有固定流量,要不easy被觉得垃圾站。

  • 确保页面能被索引。有一指向它的URL。
  • URL应该遵循最佳实践。

    如blog/how-to-driver有更好的可读性。

在正确的地方使用正确的关键词

  • 把关键词放在URL中
  • 关键词应该是页面的标签
  • 带有H1标签
  • 图片文件名称、ALT属性带有关键词
  • 页面文字
  • 加粗文字
  • Descripiton标签

内容

对于技术博客而言。内容才是最须要考虑的因素。

能够考虑一下这篇文章,尽管其主题是以SEO为主 用户体验与站点内容

不可忽略的一些因素是内容才是最优质的部分。没有内容一切SEO都是无意义的。

复制内容问题

一个以用户角度考虑的问题

用户须要看到多元化的搜索结果

所以对于搜索引擎来说。复制带来的结果:

  • 搜索引擎爬虫对每一个站点都有设定的爬行预算,每一次爬行都仅仅能爬行trpgr页面数。
  • 连向复制内容页面的链接也浪费了它们的链接权重。
  • 没有一个搜索引擎详解它们的算法如何选择显示页面的哪个版本号。

于是上文说到的作者给了以下的这些建议:

避免从网上复制的内容(除非你有非常多其它的内容汇总。以使它看起来不同 - 我们做头条。对我们的产品页面的新闻片段的方式) 。这当然强烈适用于在自己的站点页面以及。内容反复能够混淆搜索引擎哪些页面是权威(它也可能会导致罚款。假设你仅仅是复制粘贴别人的内容也行) ,然后你能够有你自己的网页互相竞争排名!

假设你必须有反复的内容,利用相对=规范,让搜索引擎知道哪个URL是一个他们应该被视为权威。可是。假设你的页面是还有一个在网络上找到一个副本?那么開始想出一些策略来添加很多其它的文字和信息来区分你的网页,由于这样反复的内容是决不可能得到好的排名。

——待续。

保持更新

谷歌对于一个一直在更新的博客来说会有一个好的排名,当然仅仅是相对的。

对于一个技术博客作者来说。一直更新的优点不仅能够让我们不断地学习很多其它的内容。

也能够保持一个良好的习惯,而对于企业来说更是如此。假设我们每天去更新我们的博客,那么搜索引擎对于我们站点的收录也会变得越来越加频繁。

那么,对于我们的排名及点击量来说也算是一个好事。当我们能够获得足够的排名靠前时,我们的PR值也在不断地提高。

很多其它内容能够參考:Google Fresh Factor

站点速度

谷歌曾表示在他们的算法页面载入速度问题,所以一定要确保你已经调整您的站点,都服从最佳做法,以使事情迅速

过去的一个月里,我试着提高自己的站点的速度。有一个相对好的速度。可是受限于域名解析速度以及VPS

站点速度分析与traceroute

UX与站点速度优化——博客速度优化小记

Nginx ngx_pagespeed nginx前端优化模块编译

保持耐心

这是有道理的,假设你在须要的谷歌机器人抓取更新的页面。然后处理每一个页面,并更新与新内容相应的索引的时间因素。

而这可能是相当长一段时间。当你正在处理的内容PB级。

SEO是一个长期的过程。非常少有站点能够在短期内有一个非常好的位置,除非是一个热门的站点。然而在它被发现之前也会一个过程。

链接

在某种意义上,这个是提高PR值,及站点流量的另外一个核心。除了内容以外的核心。

每一个程序猿必知之SEO

  • 链接建设是SEO的基础部分。除非你有一个异常强大的品牌。不须要干什么就能吸引到链接。
  • 链接建设永不停止。这是不间断营销站点的过程。

关于链接的内容有太多,并且当前没有一个好的方法获取链接尽管在我的站点已经有了

Links to Your Site

Total links

5,880

同一时候寻求很多其它的链接是更有利更相关的链接能够帮助一样多。假设你有你的内容的分销合作伙伴,或者你建立一个小工具,或其它不论什么人都会把链接回你的站点在网络上 - 你能够通过确保各个环节都有最佳的keyword锚文本大大提高链路的相关性。您还应该确保全部链接到您的站点指向你的主域( http://www.yourdomain.com 。像http://widget.yourdomain.com不是一个子域) 。另外,你要尽可能多的联系,以包括适当的替代文字。

你的想法。

另外。或许不太明显的方式,建立链接(或者至少流量)是使用社交媒体 - 所以设置你的Facebook 。Twitter和谷歌,每当你有新的链接一定要分享。这些通道也能够作为一个有效的渠道,推动很多其它的流量到您的站点。

由社交渠道带来的流量在如今已经越来越重要了。对于一些以内容为主导的站点。并且处于发展初期。能够迅速带来流量,能够參考一下这篇文章

寻ta分析与站点内容

一些更简单的办法就是交换链接,总之这个话题有些沉重。可能会带来一些负面的影响,如黑帽SEO。。

。。

參考来源:

《SEO艺术》(The Art of SEO)

每一个程序猿必知之SEO的更多相关文章

  1. 程序猿必知必会Linux命令之awk

    前言 对于一名专业的程序员来说,Linux相关知识是必须要掌握的,其中对于文本的处理更是我们常见的操作,比如格式化输出我们需要的数据,这些数据可能会来源于文本文件或管道符,或者统计文本里面我们需要的数 ...

  2. Java程序猿必知的10个调试技巧

    在本文中,作者将使用大家经常使用的的开发工具Eclipse来调试Java应用程序.但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运行时上面. 在開始之前,推荐大 ...

  3. 程序猿必知会的JavaScript 的遍历方式

    不管是移动移动端开发还是web端开发,我们对JS的使用频率都在增加,今天小编将要和大家分享的就是JavaScript中,遍历方式的一些实现方法,个人感觉还是很有用的,有兴趣的童鞋可以一起来看看. 为了 ...

  4. c++程序员必知的几个库

    c++程序员必知的几个库 1.C++各大有名库的介绍——C++标准库 2.C++各大有名库的介绍——准标准库Boost 3.C++各大有名库的介绍——GUI 4.C++各大有名库的介绍——网络通信 5 ...

  5. [置顶] 程序员必知(三):一分钟知道URI编码(encodeURI)

    因为浏览器会用一些特殊的字符作为特定的意义,所以在要传输的内容上如果有这些特殊的字符的话,就需要对其进行转义才能正确传输,如以下字符为发送时候的关键字,即特殊字符 ;/?:@&=+$,# 所以 ...

  6. 连载《一个程序猿的生命周期》-《发展篇》 - 7.是什么阻碍了"程序猿"的发展?

    有两件事想记录一下,具有普遍性和代表性."程序猿"加了引号,是泛指一类人,也并非局限于IT行业.       山东子公司的总经理是公司大股东之一,个子不高.有些秃顶.面容显老,但看 ...

  7. Android程序员必知必会的网络通信传输层协议——UDP和TCP

    1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯技术这一块)的开发者来说,网络编程是基础中的基础,只有更好地理解相关基础知识,对于应用层的开发才能做到游刃有余. 对于Android ...

  8. 迈向高阶:优秀Android程序员必知必会的网络基础

    1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用 ...

  9. 13.14.15.16.17&《一个程序猿的生命周期》读后感

    13.TDS 的标准是什么,怎么样才能认为他是一个标准的TDS?? 14.软件的质量包括哪些方面,如何权衡软件的质量? 15.如何解决功能与时间的矛盾,优秀的软件团队会发布有已知缺陷的软件么? 16. ...

随机推荐

  1. Linux 命令多到记不住?这个开源项目帮你一网打尽!

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 最近发现了一个 ...

  2. Spring Cloud (13) 服务网关-路由配置

    传统路由配置 所谓传统路由配置方式就是在不依赖于服务发现机制情况下,通过在配置文件中具体制定每个路由表达式与服务实例的映射关系来实现API网关对外部请求的路由.没有Eureka服务治理框架帮助的时候, ...

  3. mysql简单增删改查(CRUD)

    先描述一下查看表中所有记录的语句以便查看所做的操作(以下所有语句建议自己敲,不要复制以免出错): user表,字段有 id, name,age,sex:id为主键,自增,插入时可以写 NULL 或者 ...

  4. PHP内的包含语句(include(),require(),include_once(),require_once())

    背景:继续总结PHP内的函数. 在一般的程序中,我们经常重复用到一些代码,但是如果只是简单的进行代码复制,则会增加代码的冗余度,不便于程序的运行.因此,我们可以把重复性的代码分离出来,以外部文件的方式 ...

  5. redis集群——RPLR简笔(Redis+PostgreSQL+Linux(centos7)+RabbitMQ)

    使用的是centos7. 1.下载最新redis源码,解压(2016-05-12最新版本为3.2.0,3.0及以上才有官方集群) 2.进入源码根目录(此目录下的redis-stable目录),找到ut ...

  6. CSS——宠物demo

    注意:ul中自带padding值,需要清除. <!DOCTYPE html> <html lang="en"> <head> <meta ...

  7. OpenCV3 Java 机器学习使用方法汇总

    原文链接:OpenCV3 Java 机器学习使用方法汇总  前言 按道理来说,C++版本的OpenCV训练的版本XML文件,在java中可以无缝使用.但要注意OpenCV本身的版本问题.从2.4 到3 ...

  8. Concurrency and Application Design

    Concurrency and Application Design In the early days of computing, the maximum amount of work per un ...

  9. comdlg32.dll

    dll的应用,目前还不知道要怎么查看dll里的功能,暂且试着用了一个, 下面的Declare 分32位office软件和64位,如果是64位,要在Declare 后面加上PtrSafe ,定义的Typ ...

  10. C# DataTable扩展方法

    在日常搬砖中,总结了一些简单的扩展方法. public static bool IsNullOrEmpty(this DataTable dt) { ; } public static bool Is ...