Prerender.io - 预渲染架构,提高AngularJS SEO

news/2024/5/10 18:21:54/文章来源:https://blog.csdn.net/weixin_30613433/article/details/96076464

近些年来,越来越多的JavaScript框架(即AngularJS,BackboneJS,ReactJS)变得越来越流行。许多公司和开发人员使用这些JavaScript框架开发应用程序。这些框架有很多的优势:

  • 前端和后端独立开发   
  • JavaScript框架+RESTFUL的API(或微服务架构)
  • SPA(Single Page Application)
  • 某种程度上有利于提高开发效率

但是使用JavaScript框架对前台尤其是需要支持搜索引擎的页面是很有问题的,这是因为我们使用这些框架基本上都是基于虚拟元素或属性和JavaScript绑定JSON对象,都是SEO不友好的。很多搜索引擎,社交媒体,爬虫甚至不支持抓取JavaScript的网页。  

很庆幸的是,我们可以使用PreRender.io预渲染页面(PreRender.io通过执行页面上的JavaScript,然后呈现给搜索引擎爬虫)。

什么是PreRender.io预渲染

Prerender.io是基于Node.js的程序,它可以让你的JavaScript网站支持搜索引擎,社交媒体,并且它兼容所有的JavaScript框架和库。它采用PhantomJS渲染JavaScript的网页然后呈现为HTML。此外,我们可以实现的prerender服务层来缓存访问过的页面,这将大大提高性能。

PhantomJS是利用JavaScript API脚本化的Headless WebKit。它具有  速度快  和  支持Native 的各种Web标准:DOM处理,CSS选择器,JSON,Canvas和SVG。

现已有很多prerender许多中间件(我们可以用它来实现应用程序内部逻辑的prerender库):

  • NodeJS Express
  • Ruby on Rails
  • Java
  • ASP.NET MVC
  • PHP Zend Framework
  • Apache
  • Nginx.

你可以找到从这个链接找到大多数的中间件:  https://prerender.io/documentation/install-middleware。Apache和Nginx的是服务器容器级中间件,其他都是应用层面的中间件。

官方网站是:  https://prerender.io/。

GitHub的网址:  https://github.com/prerender 

你可以到我的github地址下载我写的ASP.NET MVC 和ASP.NET Core的中间件: https://github.com/dingyuliang/prerender-dotnet

或者用Nuget下载我写的ASP.NET MVC 和ASP.NET Core中间件: 搜索Prerender, https://www.nuget.org/packages?q=prerender 

     1. ASP.NET MVC: 

Install-Package DotNetOpen.PrerenderModule

     2. ASP.NET Core: 

Install-Package DotNetCoreOpen.PrerenderMiddleware

     3. PrerenderReady jQuery: 

Install-Package DotNetOpen.PrerenderReady.jQuery

     4. PrerenderReady AngularJS: 

Install-Package DotNetOpen.PrerenderReady.AngularJS1

 

PreRender.io 预渲染解决方案

根据PreRender逻辑,我觉得有3个不同的级别的解决方案来实施prerender.io

  • 方案1:应用层

           通过中间件实现对应用程序级别prerender.io逻辑(即Express NodeJS中间件,Ruby on Rails的中间件,ASP.NET MVC中间件,...)

  • Http请求到达
  • 应用程序将检查Http请求是否来自爬虫(User Agent)。
  • 如果请求来自爬虫,那么appliaction将调用prerender服务,把原来的URL作为查询字符串。 
    • 预渲染服务将调用应用程序 
    • 应用程序返回原始的HTML用JavaScript逻辑的prerender服务
    • 预渲染服务将执行内部HTML的JavaScript(与浏览器类似)
    • 预渲染服务将最终的HTML返回到应用程序。
    • Appliaction将最终的HTML返回到浏览器。
  • 如果Http请求来自普通用户,应用程序将执行输出,并发送回浏览器。

  • 方案2:服务器容器级别

            通过使用URL重写中间件,实施服务器容器级别prerender.io逻辑(i.e. Apache,Nginx,IIS)。

  • Http请求到达
  • 服务器容器(如Apache,Nginx,IIS)将检查Http请求是否来自爬虫(User Agent)。
  • 如果Http请求来自爬虫,然后重写URL(将原始URL作为查询字符串)预呈现服务。 
    • 预渲染服务将调用应用程序 
    • 应用程序返回JavaScript逻辑原始的HTML 
    • 预渲染服务将执行内部HTML的JavaScript,与浏览器类似
    • 预渲染服务将返回最终的HTML服务器容器(Apache,Nginx,IIS)。
  • 如果Http请求来自普通用户,然后将流量重定向到应用程序。应用程序将执行并返回输出到服务器容器。

  • 方案3:网络级别

            我们通过负载均衡的代理实现网络级prerender.io逻辑,i.e. HAProxy:

  • Http请求到达
  • 负载均衡代理会检查Http请求是否来自爬虫(User Agent)。
  • 如果Http来自爬虫,然后将流量重定向(将原始URL作为查询字符串)预呈现服务。 
    • 预渲染服务将调用应用程序 
    • 应用程序返回包含JavaScript原始的HTML 
    • 预渲染服务将执行内部HTML的JavaScript,与浏览器类似
    • 预渲染服务将最终的HTML返回给负载平衡的代理。
  • 如果Http请求来自普通用户,将流量重定向到应用程序。应用程序将执行并返回输出到负载平衡的代理。

 

解决方案比较

以上3种不同的解决方案是在不同的级别解决相同的问题,但是它们有着不同的性能结果。

  • 方案1:应用层

          该解决方案易于实施,易于调试,但它也加重应用程序负载,因为应用程序需要等待的prerender服务调用的应用程序和执行JavaScript,这将需要大量的时间等待,并且等待时间取决于它的JavaScript逻辑的复杂性。因此,这种解决方案的瓶颈是应用程序。

          如果的prerender服务已关闭,会影响普通用户访问体验(长时间的请求预呈现服务,消耗应用程序和服务器容器资源)。

          推荐指数:1 

  • 方案2:服务器容器级别

          这种解决方案利用URL重写逻辑来将负载瓶颈从应用级移到IIS级,这种方案提高了应用程序的灵活性。

          如果的prerender服务已关闭,会影响普通用户访问体验是(长时间的请求预呈现服务,消耗服务器容器资源)。 

    推荐指数:2

  • 方案3:网络级别

          这种解决方案将在最高水平通过使用负载平衡来实现,在网络级,因此,存在于服务器容器和应用程序无瓶颈,因为它移动到负载平衡。 

          有了这个解决方案,甚至的prerender服务关闭,也不会影响到普通用户的接入体验。 

          推荐指数:3

基于上述的基本分析,通常来说,方案3比方案2更好,方案2比方案1更好。

性能问题

无论我们将要使用那种解决方案,我们总应该思考如何提高性能,因为执行JavaScript逻辑总会比执行服务器端逻辑花费更长的时间,而且不可预见。

在另一方面,如果我们只重定向爬虫的Http请求到预渲染服务,我们不需要提供最新信息给爬虫,我们可以使用prerender的缓存服务来提高性能,我们可以缓存爬虫访问过的页面12小时-1天。  

在接下来文章中,我将解释如何使用开源项目来实现的prerender服务.

 

Prerender.io相关

  1. Prerender.io - 预渲染架构,提高AngularJS SEO
  2. Prerender.io - 设置预渲染服务,为搜索引擎优化JavaScript
  3. Prerender.io - 实施最佳实践
  4. Prerender.io - 应用层中间件 - ASP.NET HttpModule
  5. Prerender.io - 应用层中间件 - ASP.NET Core中间件
  6. Prerender.io - jQuery和angularJS插件prerenderReady

 

转载于:https://www.cnblogs.com/bmwchampion/p/6513517.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_817739.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

codewars另一个可以锻炼代码编程能力的网站

今天在面试候选人的时候,发现一个候选人在用一个代码在线练习的平台:codewars,觉得还蛮有意思的。就登录进去看了一下。 站点地址为:https://www.codewars.com/ 其支持在线的编写和运行。其支持下面的语言。 根据你的刷题等级&a…

如何用OpenSSL从https网站上导出SSL的CA证书?

我们在访问https的时候,对于有的程序需要提供访问网站的CA证书,这个时候客户端才能访问系统网站,比如使用TIBCO Business Workspace 5 HTTP send request activty 去访问Google API提供的REST 服务的时候,就需要我们提供www.googl…

如何监听第三方应用程序(SOAP or RESTful 客户端)访问HTTPS网站时的数据?

随着互联网的应用越来越多,在我们的日常开发和调试当中(比如调试SOAP和RESTFul的时候),我们常常需要访问用第三方的工具访问HTTPS的网站,为了简化描述,本文使用IE浏览器访问Google 提供的https://www.googl…

一个非常有意思的在线工具网站(绝对不是广告)

今天在网上搜索一个basecode和正常文本互转的工具时,发现了一个很好的在线工具网站,不敢自己独自享用,现给大家推荐一下。 这个网站的地址是:http://tool.oschina.net/ 还挺有意思的。可以测试自己写正则表达式是否正确&#xf…

Radware:研究显示图像优化不佳影响用户网站体验

日前,Radware发布了一份经过验证的数据,证实Web页面未经有效优化的图像会对用户体验产生明显可衡量的影响。 Radware委托神经科学研究领导者NeuroStrata对三种不同的图像渲染进行了测试。通过面部分析软件,捕捉250多位参与者在被要求可以依据…

页面停留时间和网站停留时间详解

一、页面停留时间与网站停留时间是如何计算出来的? 假设用户访问了网站的主页(Home)。分析工具将这个访问者标记为一个Visit,接着这个访问者又浏览了另外两个页面(Page2和Page3),然后他离开了你…

大数据下网站数据分析应用

<script type"text/javascript"></script><script type"text/javascript" src"http://widget.wumii.cn/ext/relatedItemsWidget"></script> 更多阅读&#xff1a;电子商务网站数据分析用数据辅助设计-搜索中的实践电子商…

推倒网站跟踪的时代已经到来

我们正在见证互联网发展中的一个分水岭——在苹果推出内容拦截器后&#xff0c;我们看待和理解我们网上的用户的方式将发生深刻的改变。 这看上去并没有多么重要。虽然广告拦截器在桌面浏览器上存在了很多年&#xff0c;但类似谷歌分析的产品仍然成为了测量和监测网站的行业标准…

推倒网站跟踪的时代已经到来

我们正在见证互联网发展中的一个分水岭——在苹果推出内容拦截器后&#xff0c;我们看待和理解我们网上的用户的方式将发生深刻的改变。 这看上去并没有多么重要。虽然广告拦截器在桌面浏览器上存在了很多年&#xff0c;但类似谷歌分析的产品仍然成为了测量和监测网站的行业标准…

如何用第三方开源免费软件portecle从https网站上导出SSL的CA证书?

在我这篇文章中&#xff0c;我提到了如何用OpenSSL从https网站上导出SSL的CA证书? 这种方式不太直观&#xff0c;且需要用户自己手工拷贝&#xff0c;然后另存为文件&#xff0c;那么有没有更好更方便的工具呢&#xff1f; 幸运的是&#xff0c;有热心于开源项目的行业人士为…

10款值得收藏的网站数据实时分析工具

网络分析工具可以帮助你收集、预估和分析网站的访问记录&#xff0c;对于网站优化、市场研究来说&#xff0c;是个非常实用的工具。 每一个网站开发者和所有者&#xff0c;想知道他的网站的完整的状态和访问信息&#xff0c;目前互联网中有很多分析工具&#xff0c;本文选取了1…

10款值得收藏的网站数据实时分析工具

网络分析工具可以帮助你收集、预估和分析网站的访问记录&#xff0c;对于网站优化、市场研究来说&#xff0c;是个非常实用的工具。 每一个网站开发者和所有者&#xff0c;想知道他的网站的完整的状态和访问信息&#xff0c;目前互联网中有很多分析工具&#xff0c;本文选取了1…

巧用心理学,高效优化网站转化率

想必你曾听说过心理学对优化网站转化率的作用&#xff0c;或许你深信不疑&#xff0c;或许你嗤之以鼻。在老外眼中&#xff0c;心理学和CMO&#xff08;首席营销官&#xff09;在很多方面都有共同点。一名优秀的CMO应当善于将心理学研究成果运用到营销工作中。可惜的是&#xf…

巧用心理学,高效优化网站转化率

想必你曾听说过心理学对优化网站转化率的作用&#xff0c;或许你深信不疑&#xff0c;或许你嗤之以鼻。在老外眼中&#xff0c;心理学和CMO&#xff08;首席营销官&#xff09;在很多方面都有共同点。一名优秀的CMO应当善于将心理学研究成果运用到营销工作中。可惜的是&#xf…

网站细分分析的十个要点

随着数据量的大量产生及很容易获取&#xff0c;许多网站分析人员通过与专家、社会媒体、同等进行交流讨论分析什么样的数据才能产生有意义/价值的信息。 作为艺术与技术结合的网站分析师&#xff0c;不能仅依靠关键指标或者依赖于一个很炫的仪表盘。而真正的价值体现在于不断的…

网站细分分析的十个要点

随着数据量的大量产生及很容易获取&#xff0c;许多网站分析人员通过与专家、社会媒体、同等进行交流讨论分析什么样的数据才能产生有意义/价值的信息。 作为艺术与技术结合的网站分析师&#xff0c;不能仅依靠关键指标或者依赖于一个很炫的仪表盘。而真正的价值体现在于不断的…

网站分析的“十字箴言”

互联网相比线下最大的优势在于用户行为可追踪&#xff0c;可通过分析进行用户体验优化&#xff0c;由此产生了一个专业领域——网站分析&#xff0c;其方法与实践在2008年之前就已经理论化、系统化&#xff0c;相关产品也非常丰富&#xff0c;如处于全球顶级水平的ominiture、w…

HAProxy实现网站高并发集群

简介&#xff1a;HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理&#xff0c;支持虚拟主机&#xff0c;它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件…

洛谷 P1886 滑动窗口 (数据与其他网站不同。。)

题目描述 现在有一堆数字共N个数字&#xff08;N<10^6&#xff09;&#xff0c;以及一个大小为k的窗口。现在这个从左边开始向右滑动&#xff0c;每次滑动一个单位&#xff0c;求出每次滑动后窗口中的最大值和最小值。 例如&#xff1a; The array is [1 3 -1 -3 5 3 6 7], …

一个在线练习编程的网站

在笔者转发一篇非常有意思的文章&#xff1a;http://blog.csdn.net/chancein007/article/details/53731514中提到什么是“编码套路”&#xff08;Code Kata&#xff09;,而且提到可以从Dave Thomas的21种实用的编码套路中获取灵感&#xff08;CodeKata.com&#xff09;&#xf…