网站工程师的SEO: 38个来之不易的教训和提示
基础知识:SEO(Search Engine Optimization):汉译为搜索引擎优化,它利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。
John DeFeo
我喜欢开玩笑说SEO代表“其他人的义务”,因为当出现问题时很容易被指责。工程师们懂得这种痛。很多人指责他们,有时是“SEO人员”。但是,事实是这样的:如果你的技术问题已经全部解决,就不会有搜索引擎优化这样的事情。
工程师有责任理解他们在SEO中的角色,同样,那些与工程师一起工作的人也有责任与他们合作,而不是在出现问题时责怪他们。这种关系需要公开和诚实地分享信息。
我希望这篇文章突出了一些重要但很少讨论的话题,这些话题不仅值得工程界讨论,也值得依赖工程团队的人讨论。
服务器稳定性和停机时间
-
503服务不可用”HTTP响应代码是处理计划停机或意外停机的最佳方式。与其他5XX响应相比,它对搜索排名的影响很小。
-
500、502和504 HTTP响应代码会导致谷歌关闭一个网页或完全取消索引。每次一个人或搜索爬虫收到这些响应代码中的一个,随着时间的推移,预计会失去5-10次有机访问。
-
快速沟通,并在出现问题时向管理者发送更新。否则,你会被许多寻找答案的人所困扰(这会妨碍你的团队寻找解决方案)。
-
为每个有害响应代码(例如4XX和5XX错误)创建自定义皮肤和跟踪事件。当外行人能够提供一些细节时,问题就更容易诊断。
-
计算错误率时要非常小心。一个复杂的web页面在加载完成时可能会调用服务器150次。这意味着日志文件将低估预先发生的有害响应代码的频率。假设一个web页面被加载了两次。第一次,它响应一个“200-OK”状态码,并加载页面上的其他所有内容。第二次尝试时,它会响应一个“502-Bad Gateway”状态码,页面的其余部分无法加载。服务器总共被调用了151次,其中只有一次是502状态,但是,该用户的错误率是50%,而不是0.6%!
-
抵抗搁置轶事证据的诱惑。许多被认为是“不能重现”而搁置的bug是更大问题的预兆。
内容交付网络和缓存
-
缓存不能替代基本的站点优化。可以把缓存页面想象成约会网站上一张很棒的照片。这是人们看到的第一件事,但是当你开始一段关系,一个人开始了解“真正的你”。用户和搜索引擎也是如此。
-
类似地,支持AMP的页面也不能替代速度慢的移动站点。
-
注意页面大小限制。例如,Akamai有一个严格的的1MB文件大小限制,当超过该限制时将导致一个500响应代码。
-
将内部日志与CDN日志合并,否则90%以上的问题可能无法检测到。
-
考虑在大型网站上使用“304-Not Modified”响应代码,这些网站有很多页面不经常更改。
-
寻找没有必要的动态查询(例如填充很少更改的列表页面的逻辑)。你可以通过缓存查询和调度刷新来避免服务器上不必要的负担。
重写规则和重定向管理
-
当你更改URL时,确保在启动时验证了重定向。这将带来最大程度的旧页面的信任和公平。让URL断开,然后再修复它们这无异于自杀:谷歌会随着时间的推移而降低此故障页面的值。
-
检查重写标志或规则是否正在导致重定向链。当站点以HTTP形式启动并迁移到HTTPs时,这很容易发生。一些URL在安全版本和非安全版本之间来回切换,直到到达最终目的地。这些额外的跳转会破坏原始URL具有的公平性(equity)。
-
如果撤销或反向重定向,请清除你的CDN缓存,以避免重定向循环。
机器人阻塞
-
在被证明有罪之前,宁可做无罪的事。网站的超级用户最有可能是那些像机器人一样的人,因为他们的浏览速度很“不正常”,或者浏览器安装的插件也可能会让人掉入陷阱。这听起来像是一个边缘案例,但在Quora这样的社区网站上,一个超级用户每月可以吸引1万到1.2万的访问量。
-
俄罗斯的机器人不会自动变坏,美国的机器人也不会自动变好。许多坏蛋在亚马逊公司的美国境内部署基于AWS服务器的机器人。
延迟和PageSpeed
PageSpeed(一款网页速度测量工具,也可以理解为页面加载速度)
-
快速选择一种测量工具(比如Rigor, Lighthouse 或 PageSpeed Insights)并坚持使用。趋势比精确的数字更重要,在工具上吹毛求疵很容易浪费时间。
-
手机移动页面速度很重要,即使你运行的是一个AMP版本的网站。谷歌根据网站的本地移动体验(包括速度、用户体验和其他因素)来判断网站。
-
要求某个人拥有添加到页面中的每个跟踪像素和标记的所有权,然后让这些责任人每六个月对他们的标记整理一次。如果你不这样做,人们会要求你在页面中添加垃圾,直到你的团队因为站点缓慢而受到指责。
-
服务器响应时间对于拥有数百万页面的站点尤其重要。如果你的服务器响应缓慢,谷歌不会停留太久。
-
如果你在大型网站上运行NGINX,请确保实时Gzip压缩不会弊大于利(比如,造成瓶颈,从而降低服务器响应时间)。
-
清除任何阻碍页面呈现的东西。这将同时改善许多指标。(即使是纯文本网站[1],在加载JS、CSS和字体时也会遇到瓶颈。)
-
关注页面加载的前200ms和2s期间发生的事情。由于动态元素(如广告)的影响,有些页面从不会加载“完全”。
关键渲染路径
-
Time-to-first-byte(TTFB全称Time To First Byte,是指网络请求被发起到从服务器接收到第一个字节的这段时间,它包含了 TCP连接时间,发送HTTP请求时间和获得响应消息第一个字节的时间。)是一个重要的指标,但同样重要的是第一个字节中包含的内容。在打开与服务器的新连接之前,浏览器应该能够构建第一屏的内容。
-
定义页面元素的大小,以避免跳跃和摇晃页面。当页面来回移动时,用户会感到沮丧,这会让整个页面看上去很慢,即使它加载得很快。
-
阅读Ilya Grigorik在这个主题上发表的文章[2]。即使是经验丰富的开发人员也可以从中学到一些东西。
GOOGLEBOT(谷歌网页抓取机器人)的“新”技术和可访问性
-
客户端呈现可能意味着SEO的死亡。(看看Hulu发生了什么[3]。)谷歌建议你为他们的搜索爬虫程序提供一个服务器端呈现的页面,即使用户也将会看到客户端呈现的页面。(注:谷歌并不认为这是一种掩饰,尽管它看起来是。)
-
在用户看到“无限滚动”的情况下,为Googlebot提供简单的分页。
-
避免使用“块级别”链接,即使它简化了代码。所有这些额外的东西都被打包到一个<a>标记中,这使得Googlebot很难将上下文值传递到目标页面。
STAGING(模拟)和QA
-
使用robots.txt文件阻止搜索引擎从模拟和QA(Question Asked)站点爬取数据。
-
在谷歌搜索控制台注册staging和QA站点。这听起来不可思议(因为你不希望搜索引擎找到这些域名),但是如果测试域名意外地被索引时,你可以在搜索控制台中删除整个域名的索引。
产品需求
-
找个人(最好是SEO团队里的,但如果没有的话,那就是产品经理)来定义必须构建到页面中的所有东西,包括一些显而易见的东西,比如<title>标签和其他元数据。这很乏味,他们会讨厌你问这问那,但如果你创建的页面没有考虑到这些关键标签,他们会更讨厌你。
内部链接
-
链接是网站和整个网络的生命线。任何重要的东西离主页的距离都不应该超过5次点击,所以对于那些想要去掉登录页面、导航链接等的“伟大的简化者”来说,这会存在很多问题。
注册商和IP管理
-
永远不要让营销人员从网站托管的IP地址发送时事通讯和促销电子邮件。一个违反CAN-SPAM(反垃圾电子邮件)法案的流氓员工可能会导致整个网站被列入黑名单。
-
确保有人花时间填写注册机构要求的年度“你的联系方式是最新的吗”调查问卷。如果你不这样做,就会使某些不法分子更容易地从技术上窃取你的域名。
JAVASCRIPT脚本
-
一个页面开始呈现,然后变成纯白色,经常会因为开启 write标记而中断。
-
Google会尝试在Javascript中遵循相对路径,即使它们不存在。这会导致受污染的爬取错误报告。
当错误发生时
-
行动要快,因为谷歌是个善变的情人。建造一所房子需要几个月的时间,而烧毁它只需几分钟,所以要迅速地熄灭火柴,并花时间向每个人传授消防安全知识!
相关链接:
[1]——https://www.goodcheapandfast.com/
[2]——https://developers.google.com/web/fundamentals/performance/critical-rendering-path/measure-crp
[3]——https://www.elephate.com/blog/javascript-seo-backfire-hulu-com-case-study/
[4]——https://twitter.com/johndefeo
[5]——https://www.linkedin.com/in/johndefeo/