数字化营销
JS脚本与SEO优化
读者lin在问答板块问了一个纯技术问题,关于网站JavaScript的使用和SEO注意事项。JS的SEO是近年越来越重要的问题,以前还没写过这方面的话题。无论是异步调用内容,还是增加页面互动,现在的网站几乎无法避免使用JS脚本。但JavaScript使用不当的话可能会对SEO造成非常大的影响。
lin的问题是:
一个网站,源码都封装在js里面,直接调用js来展示,这可咋搞
这是比较极端的情况,最后再回答。先说一下一般情况下,页面使用JS时要考虑的SEO问题。
搜索引擎怎样处理JS
首先,简单一句话,JS造成SEO问题的症结在于,搜索引擎不一定执行JS脚本。
做SEO的都知道,要有搜索流量,搜索引擎蜘蛛需要顺利爬行链接,抓取页面,解析并索引页面html代码中的内容,然后才谈得上排名和流量。在爬行、抓取、索引的过程中,如果JS造成障碍,就会导致问题。
浏览器执行JS、渲染页面是肯定的,使用用户访问一切正常。但问题就在于,搜索引擎蜘蛛抓取页面html代码时,如果遇到JS,不一定会去执行JS脚本,那么需要执行JS才能看到的内容,搜索引擎就不一定看得到。
Google遇到页面JS时,会在有计算资源、且页面有比较高价值时,尝试执行脚本、渲染页面。百度则基本上不执行JS脚本。所以做中文网站,使用JS上就更要谨慎。
重要链接不要用JS
搜索引擎爬行、抓取页面是靠跟踪链接的。如果重要链接需要运行JS脚本才能调用或解析出来,那搜索引擎就可能无法跟踪。
不是说链接就不能用JS调用,但重要的、想被收录的页面至少还要有最普通的<a>格式链接提供抓取入口。比如,调用一些相关文章、相关产品链接,可以用JS,但这些链接在网站主导航中都已经有列表页面提供了入口才行。
主导航、菜单系统、栏目/产品列表,不要用JS,除非你确认有其它方法提供了入口。
想被收录的内容不要用JS调用
页面上的文字内容,凡是想被收录的,不要用JS调用,包括文章正文,产品说明,产品图片,评论等。
JS倒是可以用来调用那些不想被收录的文字,比如广告、某些侧栏内容等。
我见过用JS调用内容的各种千奇百怪的用法,比如还有用JS调用页面标题标签的。
慎用懒加载、瀑布流
图片懒加载,甚至文字内容懒加载,是现在网站经常使用的方法,在一定程度上有利于提高页面速度。但要注意,用JS实现懒加载时,是否需要用户互动才能加载,比如点击“更多”链接,或者向下拉页面,搜索引擎蜘蛛是不会做这些动作的,不会点击按钮,也不会下拉页面,所以就可能看不到懒加载后的内容。无论懒加载的是更多本页内容,还是更多其它页面列表,都可能造成爬行、索引问题。
列表页面使用瀑布流是社交媒体网站的主流方式,用户已经习惯,有的普通网站也学这种方式。同样,要考虑到社交媒体网站经常是主动屏蔽搜索引擎的,不想让搜索引擎索引,普通网站大概率是想被索引的,使用瀑布流时要想一想有没有提供搜索引擎可以跟踪链接的其它入口。
注意速度
一般来说,使用JS会拖慢页面打开和响应速度。
通常下载JS文件倒还不算大问题,除非用了几MB的JS文件。但浏览器执行JS有可能会很耗费设备资源,设计不周的JS可能会执行好几秒钟,浏览器在执行JS时不能处理其它事情,造成脚本阻塞,对用户来说就是个页面空白或卡死数秒钟的状态,这是非常急人的。
所以,尽量删除执行时间过长的JS,执行超过1-2秒的脚本需要慎重考虑。尽量合并JS脚本,减少<script>数量。
尽量减少JS数量,包括第三方JS。我看过很多网站页面需要执行几十个JS脚本,包括很多第三方脚本。问一下自己,这些JS都是必须的吗?真的必须吗?宁可拖慢页面几秒钟、跳出率大幅提高也要用?对信息类页面,除了显示文章内容,其它都不是必须的。对电商网站,除了购物车,其它都不是必须的。
除了用户体验,页面速度也是搜索排名的重要因素。
服务器端渲染
如果可能的话,可以考虑JS在服务器端渲染,而不是客户端(浏览器)渲染。虽然这会增加技术难度,服务器响应也会变慢一点,但服务器性能一定是超过用户设备的,再加上缓存等方法,总体上是会比浏览器执行JS、渲染页面快很多的。
怎样检查JS是否造成SEO问题
几个小方法供读者参考。
一是浏览器禁用JS,看一下访问页面时是什么情况。如果禁用JS后重要内容看不到了,那么搜索引擎也可能看不到。不要寄希望于搜索引擎会青睐你的网站而去执行JS。
第二个是检查页面的快照,尤其是纯文字版的快照。搜索引擎快照在很多情况下就是搜索引擎索引的页面内容。
如果某些内容必须用JS调用,但又希望搜索引擎索引,还可以搜索一下被调用的内容,如果能搜索到,说明搜索引擎执行了JS,索引到了内容。我想不到为什么必须用JS调用,但很多技术人员对使用JS是比较执着的。
最后回到lin的问题,如果页面源码都封装在js里面,直接调用js来展示,这样的网站没办法做SEO,说服老板和技术改程序吧。