抓取jsp网页源代码(监控哪些WebView性能数据透视宝能监控四大类数据:行为数据)

优采云 发布时间: 2022-01-01 11:23

  抓取jsp网页源代码(监控哪些WebView性能数据透视宝能监控四大类数据:行为数据)

  相比需要专业移动开发者的原生应用(Native APP),基于HTML5/CSS/JavaScript的WebAPP由于开发者门槛低、迭代快,已经成为电子商务、银行等的网络服务,并支持跨平台发布。 ,浏览应用的首选,但页面渲染造成的性能差距是WebAPP无法与原生应用竞争的最大原因。因此,WebView 组件的性能优化非常重要。

  

  为什么使用 WebView

  WebAPP 显示的网页由一个名为 WebView 的组件呈现。每个网页都有一个链接或 URL。首先将URL转换为NSURLRequest,然后用加载网页的类WebView加载请求,使用- (void)loadRequest:(NSURLRequest *)request这个方法可以加载并显示网页。

  目前iOS中有两个加载网页的类,分别是UIWebView和WKWebView。 UIWebView是UIKit框架中的一个类,WKWebView是WebKit框架中的一个类。在性能方面,WKWebView 具有高性能和良好的稳定性。 ,占用内存小,完全优于UIWebView。但是,由于WKWebView是iOS8提供的组件,系统版本低于iOS8.0的iPhone/iPad用户无法正常使用WKWebView组件开发的APP。因此,大部分开发者仍然使用性能和稳定性不尽如人意的UIWebView进行WebAPP开发,而本文提到的云智慧视角宝WebView的性能监控也是以UIWebView为主要优化目标。

  进行性能监控,需要获取WebAPP页面加载*敏*感*词*的性能数据。玄宝就是将获取数据的JS代码注入到当前加载链接的html5、jsp和php网页代码中,然后通过OC和JS交互,将数据传递给OC,然后数据排序后发送到星宝后台。

  要监控哪些 WebView 性能数据

  透视宝能监控四种数据:

  行为数据:抓取用户在移动网页上的行为操作点,即点击网页内容,分析用户行为

  时间对应数据:从加载开始到链路分解完成这段时间内每个阶段所花费的时间

  ajax请求数据:捕获最终用户响应时间、响应数据下载时间、数据响应成功的回调执行时间、ajax错误数据

  JS错误数据:获取加载链接的代码错误信息

  ①时间响应数据及数据计算公式

  

  参考上图。 JS传递给兴业宝的时间响应数据就是这些字段,其中navigationStart是起点,所有的计算都需要依赖它。分析移动端H5性能数据,其实就是测量HTML5、JSP、PHP等网页元素在iOS上加载的时间长度。通过这些性能数据,开发者可以准确地发现性能问题并及时解决。下表是一个透视图。宝宝定义的响应时间分解数据和计算方案:

  

  ②资源时间序列数据

  每个网页由很多资源组成,包括.js、.png、.jpg、.css、script等,每个元素的加载需要加载时间,资源定时数据是为了准确记录每个元素的Load时间和类型,这些数据直接通过JS的性能接口获取,不经过计算直接传递给OC。

  ③JS错误和ajax请求数据

  JS错误是指抓取网页代码的错误,包括错误类型和堆栈信息,直接定位错误。 ajax请求的数据包括请求的链接、uri、最终用户响应时间、响应数据下载时间、数据响应成功的回调执行时间、ajax错误数据。 JS错误和ajax请求数据直接通过JS代码获取,不需要处理。

  JS 代码注入

  如果要准确监控一个网页的性能,就需要进行代码注入,而且只能注入网页的代码。在 UIWebView 类中,除了三个加载链接的方法和四个代理方法外,没有其他的内容,而这些方法并没有获取到内容,所以需要考虑其他的方法。 UIWebView在加载拦截的时候会进入NSURLProtocol类,正好这个类可以获取到当前加载链接NSURLRequest,并且会进入这个类的-(void)startLoading方法,这个方法是在页面加载完成之前,就在之后页面已加载,这就是我们所需要的。

  创建一个类,继承NSURLProtocol类,覆盖startLoading方法。既然我们可以拿到链接的请求,我们就向链接发送一个请求。我们可以使用原创的 NSURLConnection 或 NSURLSession。我们使用 NSURLConnection 类。发送请求并设置代理,方法是这样-(nullableinstancetype)initWithRequest:(NSURLRequest*)request delegate:(nullableid)delegate startImmediately:(BOOL)startImmediately,

  NSURLConnection的代理方法之一,可以接受请求链接数据,-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data,得到的NSData为16进制字节流数据,将字节流转换为字符串通过utf8转码,然后发现这个字符串就是当前加载网页的代码,

  网页代码是由标签组成的,会有这个标签,我们会在标签*敏*感*词*入JS代码,放在我们自己的上面

  免责声明:IT之家网站发表/转载本文只是为了传达更多信息,并不代表同意其观点或证明其描述。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线