theme: condensed-night-purple
highlight: atelier-cave-light
如果我们项目是前后端分离并且内容是AJAX动态获取想要进行网站排名优化(SEO)的话,可以使用prerender
Prerender 是一种服务或中间层应用,用于在将页面内容返回给搜索引擎爬虫之前,对单页应用或使用JavaScript动态渲染的页面进行预渲染,然后返回HTML。
当搜索引擎爬虫请求一个单页应用或使用JavaScript渲染的页面时,Prerender 捕获这个请求。
然后判断这个请求是否来自搜索引擎的爬虫,如果不是,则直接返回单页项目的HTML,按照普通单页项目的工作模式(客户端渲染)。
如果是,则把请求转发给prerender服务Prerender 服务器会使用一个头less浏览器(通常是谷歌Chrome)来打开并渲染请求的页面,就像一个真实的浏览器会做的一样。
一旦页面渲染完毕,Prerender 将完整的HTML内容返回给搜索引擎爬虫,就像是一个静态HTML页面。
搜索引擎爬虫可以轻松地索引和理解这个静态HTML内容,而无需执行JavaScript或等待异步加载。prerender中间件就是用来判断请求是否来自搜索引擎爬虫和转发请求的。
如果我们已经采用了前后分离的单页项目,而且我们的网站内容不需要AJAX去获取内容和展示内容,那么我们可以试试 prerender-spa-plugin 这个插件,这个插件是一个webpack插件,可以帮助我们在打包过程中通过无头浏览器去渲染我们的页面,并生成对应的HTML。当然这个方案适合你的路由是静态的,并且路由数量是有限的。
prerender-spa-plugin 是一个用于将单页应用(SPA)的路由生成预渲染静态HTML的插件。这个插件可以与Webpack一起使用,它主要用于优化SPA应用的SEO和性能。
配置插件:首先我们需要配置 prerender-spa-plugin 插件。配置要预渲染的路由、设置输出目录等。Webpack构建:我们运行Webpack打包命令时,Webpack会开始构建我们网站。Webpack自动会解析和编译我们的代码,并准备在预渲染过程中将要使用的数据。生成无头浏览器实例:在打包期间,prerender-spa-plugin 会创建一个无头浏览器实例,它用于执行页面的加载和渲染。逐个路由预渲染:对于每个在配置中指定的路由,我们的插件都会执行下面的步骤:使用无头浏览器打开路由:插件会将路由加载到无头浏览器中,就像一个真实的浏览器会加载页面一样。等待页面加载和渲染:无头浏览器会等待页面完全加载和渲染。包括等待异步JavaScript加载完成,确保页面是最终状态。获取渲染后的HTML:一旦页面渲染完成,插件就会获取页面的DOM结构和渲染结果,这里包括页面的HTML、CSS和JavaScript生成的内容。生成静态HTML:插件会将获取到的页面内容生成对应的静态HTML文件。这个静态HTML文件包含了完整的页面内容,包括由JavaScript渲染的部分。保存静态HTML文件:生成的静态HTML文件会被保存到指定的输出目录中,通常是我们的构建目录或特定的目录。Webpack完成构建:一旦所有路由都被预渲染为静态HTML并保存,Webpack打包就完成了。部署预渲染的静态HTML:我们生成的静态HTML文件可以被部署到任何静态文件托管服务上,以供爬虫爬取。优点:
缺点:
Phantomjs是 是一个无界面的、可编程的浏览器引擎,它可以用于模拟浏览器行为,加载和渲染网页。
虽然目前“PhantomJS已经宣布终止开发”,但是已经能够满足我们对Vue的SEO处理。
这种解决方案其实是一种旁路机制,原理就是通过Nginx配置, 判断访问的来源UA是否是爬虫访问,如果是则将搜索引擎的爬虫请求转发到一个node server,再通过PhantomJS来解析完整的HTML,返回给爬虫。
优点:
缺点:
Nuxt.js 是一个基于Vue.js的通用应用程序框架,它可以帮助我们构建服务器渲染的Vue.js应用程序。
注意: 在Nuxt.js执行 generate静态化打包时,动态路由会被忽略。
Nuxt.js通过使用Vue.js的渲染函数将Vue组件渲染为HTML字符串,然后将这些字符串传递给服务器以响应HTTP请求。这允许搜索引擎爬虫能够看到渲染后的HTML内容,从而提高了SEO。
对初学者不友好:Nuxt.js的配置和使用可能相对复杂,尤其是对于初学者来说。
性能开销:服务器渲染通常会导致更高的服务器负载和性能开销,需要考虑缓存等性能优化策略。
Next.js 是一个React框架,用于构建服务器渲染的React应用程序。
Next.js通过在服务器上预渲染页面并使用React的虚拟DOM来实现服务器渲染。它将React组件渲染为HTML字符串,然后将这些字符串发送给客户端。
🔸构建大型网站,如商城类,可以直接选择SSR服务端渲染。
🔸如果只是个人博客、公司官网这类,其余三种都可以。比如Nuxt静态化就挺好的。
🔸如果对已用SPA开发完成的项目进行SEO优化,而且支持node服务器,可以使用Phantomjs。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。