内容简介:谷歌已经明确表示,他们会在抓取你的网站之前运行你的JavaScript代码。准确地说,他们的爬虫(crawler)中运用我知道人们太关心搜索引擎优化了,总是试图尽可能地提高。很自然的,每个人都想在不运行任何JavaScript的情况下直接显示搜索引擎的内容。这不是一个坏主意,相信很多人都这么尝试过。*
谷歌已经明确表示,他们会在抓取你的网站之前运行你的JavaScript代码。准确地说,他们的爬虫(crawler)中运用 Chrome 41
浏览器打开网站,和真实用户用浏览器打开一样!但是还有其他搜索引擎和社交媒体网站可能并不会这么做。
我知道人们太关心搜索引擎优化了,总是试图尽可能地提高。很自然的,每个人都想在不运行任何JavaScript的情况下直接显示搜索引擎的内容。这不是一个坏主意,相信很多人都这么尝试过。
* 这不仅有利于搜索引擎优化
*,而且还具一些性能优势。浏览器不必等待JS文件加载后才开始渲染, 首次有效渲染(First Contentful Paint)
的时间会更短。
React App 如何预渲染?
原理其实很简单,在我们使用 npm run build
构建React App后,我们用真实浏览器渲染 build
目录(通常是 index.html
), 然后获取产生的 HTML
代码保存到一个文件中,只是所有的内部页面都需要重复相同的操作。
感谢 react-snap 让这一切变得简单。
-
在
dev依赖中安装npm i -D react-snap -
在
package.json的scripts中添加"postbuild": "react-snap" -
运行
npm run build
What it will do is after the normal build, it will run react-snap which will render them in a Puppeteer browser, scrape content and generate new build.
在 build
之后,将运行 react-snap
,在 无头浏览器(Puppeteer browser)
中渲染,抓取内容并产生新的 build
。
{
"scripts": {
"postbuild": "react-snap"
},
"reactSnap": {
"skipThirdPartyRequests": true
},
"devDependencies": {
"react-snap": "^1.23.0"
}
}
复制代码
和原作者一样,我在尝试 react-snap
的时候,也碰到了一些问题,例如著名的 'Protocol error (Runtime.callFunctionOn): Object reference chain is too long' }
, 一般在 官方问题
都能找到相应的解决方案,或者你选择 StackOverFlow
。
所以当我们在使用第三方脚本的时候,应该尽可能对他们多一些了解,比如有哪些限制或者是 options
, 请参考 文档
。
原文地址: coffeencoding.com/prerender-r… 感谢作者Gijo Varghese
以上所述就是小编给大家介绍的《React app SEO优化之预渲染》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Octane渲染入门-渲染设置图文版
- 通过分析 WPF 的渲染脏区优化渲染性能
- React 服务器端渲染和客户端渲染效果对比
- iOS渲染-将视频原始数据(RGB,YUV)渲染到屏幕上
- 通过共享内存优化 Flutter 外接纹理的渲染性能,实时渲染不是梦
- 列表渲染 wx:key 的作用、条件渲染 wx:if 与 hidden 的区别
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Game Programming Patterns
Robert Nystrom / Genever Benning / 2014-11-2 / USD 39.95
The biggest challenge facing many game programmers is completing their game. Most game projects fizzle out, overwhelmed by the complexity of their own code. Game Programming Patterns tackles that exac......一起来看看 《Game Programming Patterns》 这本书的介绍吧!