CN102377799B - 手机浏览器服务器端及其实现浏览器双线程模式的方法 - Google Patents
手机浏览器服务器端及其实现浏览器双线程模式的方法 Download PDFInfo
- Publication number
- CN102377799B CN102377799B CN201010254326.9A CN201010254326A CN102377799B CN 102377799 B CN102377799 B CN 102377799B CN 201010254326 A CN201010254326 A CN 201010254326A CN 102377799 B CN102377799 B CN 102377799B
- Authority
- CN
- China
- Prior art keywords
- monitoring
- thread
- browser
- executed
- tasks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000012544 monitoring process Methods 0.000 claims abstract description 242
- 238000013515 script Methods 0.000 claims abstract description 23
- 230000007958 sleep Effects 0.000 claims description 6
- 230000005059 dormancy Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 12
- 230000000875 corresponding effect Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 206010033799 Paralysis Diseases 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Landscapes
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种手机浏览器服务器端实现浏览器双线程模式的方法,在手机浏览器服务器端设置监控线程;该方法还包括:监控线程对浏览器内核线程执行的程序脚本是否正常进行监控,并在程序脚本执行时间到时对未结束执行的程序脚本强制结束;监控线程对浏览器内核线程指定的需执行任务进行监控,在计时器超时时将需执行任务放入时间事件队列。本发明还同时公开了一种手机浏览器服务器端,采用本发明能在不影响代码质量和执行效率,保证服务器端稳定、安全、可靠运行的同时,简单方便地实现手机浏览器的双线程内核。
Description
技术领域
本发明涉及手机浏览器技术,尤其是涉及一种手机浏览器服务器端及其实现浏览器双线程模式的方法。
背景技术
随着移动通信和网络业务的迅猛发展,移动终端如手机能提供越来越多的功能和业务,如:短信、彩信、上网功能等等。以移动终端是手机为例,在手机上实现上网功能,就需要在手机上装载浏览器,于是就出现了手机浏览器。所谓手机浏览器是专门运行于手机上的浏览器,可以实现通过手机上网浏览各种互联网内容。在实际应用中,手机终端一侧作为手机浏览器客户端,对应的网络侧作为手机浏览器服务器端,手机浏览器服务器端接收手机浏览器客户端上网浏览的请求,下载并处理网页,然后推送给手机浏览器客户端显示网页内容的后台处理程序,向用户显示所浏览的网页内容。
目前,手机浏览器分为两种:一种称为全页面渲染的浏览器,是装载于手机浏览器客户端的一个独立的程序,能使手机用户像在计算机上使用浏览器一样,但这种浏览器大都适用于高端智能手机,只有这类手机的性能才能满足全页面渲染浏览器的运行;另一种是带后台处理的浏览器,这类浏览器中,用户并不直接从站点下载内容,而是将请求提交给统一的服务器,由服务器端的一系列程序如下载、解析、JS执行等等程序处理过后,将一个轻量级的超文本链接标示语言(HTML)页面推送给手机浏览器客户端并呈现给用户。这里,JS是JavaScript的简称,是一种动态的页面编程语言,通常嵌入在HTML文件中,用于对页面进行处理和操作,响应用户请求,是页面可交互性的主要支撑。
随着动态网页的发展,对于浏览器,目前最为影响性能的就是JavaScript脚本的执行,特别是很多网络应用程序已开始不断涌现。目前各种JS引擎都在努力提高自身的性能,但JS引擎是一个庞大的编译及执行系统,对资源的消耗比较大。一般,普通的智能手机对于复杂的JS程序还有些困难,因此,现有大多数手机浏览器采用的都是带后台处理的浏览器,本文也主要针对第二种浏览器的实现进行讨论。如图1所示,这种浏览器的处理流程是这样:
当用户使用带后台处理的浏览器访问网页时,浏览器程序会通过无线网络向后台服务器发送页面请求,由后台服务器与互联网进行通讯,将网页内容下载,之后再由后台服务器对网页内容进行处理,最终形成一个简单的HTML页面,发送到手机浏览器客户端。这里,后台服务器可作为手机浏览器服务器端。
通过上述流程,可以大大减轻客户端浏览器的压力,由于目前大多数智能手机的性能还无法与计算机的性能相比,因此,简化客户端程序是非常必要的。也就是说,原先在计算机上实现的浏览器程序,现在需要由手机浏览器客户端程序和后台服务器共同完成;具体的,采用带后台服务器模式的手机浏览器,将复杂的任务交给后台服务器执行,而手机浏览器客户端只负责显示最简单的页面,这样可以增强客户端的体验。
对于采用带后台服务器模式的手机浏览器,后台服务器的主要功能包括:帮助客户端浏览器程序执行JavaScript语句;下载网页内容,并进行处理和过滤后再推送给客户端,以大大减少无用信息占用用户流量的比例,为用户节省流量;将网页改造成为适合手机显示的模式,以增强用户体验;响应用户请求事件,比如按钮点击等等。相应的,手机浏览器客户端可实现的功能包括:解析和渲染最简单的不带JavaScript语句,甚至不带层叠样式表(CSS,CascadingStyleSheets)信息的HTML页面;向后台服务器发送各种请求,如:打开网页、点击按钮等等。
对于带后台处理的手机浏览器,后台服务器基本上对用户来说是透明的,不仅用户体验不会降低,而且这种浏览器可大大减少程序的大小,简化手机浏览器客户端。由于消耗较大的工作都由后台服务器执行,可提升运算速度,且不会使用户感觉机器变慢等等,这种方式很适合手机这类移动终端使用。但与此同时,对于服务器来说,会面临很大的压力:首先,传统意义上的浏览器是客户端程序,比如:HTML解析、JavaScript执行等等功能,如果遇到恶意代码,如死循环或crash,用户只需要关闭即可;但如果服务器端程序陷入死循环或crash,就会使整个平台不能运转,进而影响到所有的用户;第二,客户端大多采用多线程、多进程等方式来处理页面,而服务器端不能采用类似多线程或多进程的模式,因为所有用户的页面数据都在服务器端保存,线程数或进程数将非常大,服务器端是无法承受的;第三,页面存在生存期的问题,大量页面聚积在服务器上,可能会超出服务器的内存。
鉴于上述问题,同时考虑到浏览器是一个开放平台,很多功能需要开放给用户及网站开发者使用,因此,为了保证服务器的健壮性、稳定性和安全性,使服务器正常运作,现有一种最简单的方案是:有选择性的支持某些操作或者标准,这种方案可禁止所有可能引发问题的模块的执行,只提供最简单的服务。其基本流程如图2所示,包括:获取到网页数据后,先去除JS标签及其内容;再解析HTML建立DOM树;计算CSS数据并插入到相应的标签中;之后反序列化,生成新的HTML页面,推送给用户的手机浏览器客户端;最后清除页面数据。这种方案先将JavaScript除去,不支持浏览器脚本,在生成简单页面并传递给用户后,即从服务器上删除。但这种方案存在一些问题,就是:第一、交互性差。这种方法由于无法支持JavaScript,因此几乎没有网页交互性可言,像论坛、邮箱等也大多不能支持;第二,过于简单,后台优势没有得到发挥。显然,这种方案中后台服务器程序基本只是一个中转站用来过滤,使用后台服务器就显得有些多余,而且提供的页面也过于简单,用户体验非常差。
现有技术还提出一种解决方案,采用监控的概念,且支持更多的操作,但此方案在具体实现上只是简单地在一些程序语句之间添加判断语句,比如:在JavaScript语句执行时,设置计数器,每执行几步就将计数器加1,如果执行超过一定次数,就认为超时或者死循环而退出。因此,这种方案存在以下问题:一方面,由于每隔一定执行间隙就要添加代码,不仅降低了代码质量,影响代码执行效率,而且还会使代码膨胀,如果需要监控太多操作的话,就会使得代码掺杂太多的无用代码,直接扩大了程序规模;另一方面,采用这种方案在需要改动代码时,还需要考虑这些掺杂的代码问题,如果程序添加了某项功能,需要监控时,也需要对这项功能掺杂一些代码,很不方便,因此该方案可扩展性差。
发明内容
有鉴于此,本发明的主要目的在于提供一种手机浏览器服务器端及其实现浏览器双线程模式的方法,能在不影响代码质量和执行效率,保证服务器端稳定、安全、可靠运行的同时,简单方便地实现手机浏览器的双线程内核。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种手机浏览器服务器端实现浏览器双线程模式的方法,在手机浏览器服务器端设置监控线程;该方法还包括:
监控线程对浏览器内核线程执行的程序脚本是否正常进行监控,并在程序脚本执行时间到时对未结束执行的程序脚本强制结束;
监控线程对浏览器内核线程指定的需执行任务进行监控,在计时器超时时将需执行任务放入预设的时间事件队列。
上述方案中,该方法还包括:浏览器内核线程在执行程序脚本之前,向监控线程发送监控程序脚本执行的监控任务;并在程序脚本正常执行结束后,使所述监控任务失效。
上述方案中,所述监控线程对浏览器内核线程指定的需执行任务进行监控为:查看当前是否有监控任务,如果没有监控任务,则监控线程进入睡眠状态;如果有监控任务,则根据预定执行时间找到最先需要执行的任务,计算预定执行时间与当前时间的差,得到需等待时间后进入等待睡眠状态;休眠需等待时间后,监控线程开始执行任务,执行结束后返回查看状态。
上述方案中,所述监控线程对浏览器内核线程指定的需执行任务进行监控之前,该方法还包括:浏览器内核线程包装好需执行的任务,并计算出具体执行的时间;将监控任务发送给监控线程,由监控线程监控是否到时。
上述方案中,该方法还包括:浏览器内核线程向监控线程指定除监控程序脚本执行和监控需执行任务以外的其他监控任务,监控线程完成对相应监控任务的监控。
上述方案中,该方法还包括:设置监控任务队列;相应的,所述浏览器内核线程将监控程序脚本执行的监控任务保存在监控任务队列中;和/或将需执行的任务作为监控任务保存在监控任务队列中;和/或将其他监控任务保存在监控任务队列中。
上述方案中,所述程序脚本为JavaScript脚本;所述程序脚本执行为JS执行。
本发明还提供了一种手机浏览器服务器端,包括浏览器内核线程单元、监控线程单元和时间事件队列;其中,
浏览器内核线程单元,用于发送指定的监控任务,执行程序脚本;
监控线程单元,用于执行对监控任务的监控,并在程序脚本执行时间到时对未结束执行的程序脚本强制结束,在计时时间到时将需要执行的任务放入时间事件队列;
所述时间事件队列,用于保存监控线程单元放置的需执行任务,并将需执行任务作为事件由浏览器内核线程单元获取并执行。
上述方案中,所述监控线程单元,还用于对除监控程序脚本执行和监控需执行任务以外的其他监控任务进行监控。
上述方案中,该手机浏览器服务器端还包括监控任务队列,用于保存所有监控任务,由监控线程单元获取并执行监控。该手机浏览器服务器端还包括用户请求队列,用于放置用户请求,并由浏览器内核线程单元选择执行。
本发明所提供的手机浏览器服务器端及其实现浏览器双线程模式的方法,在手机浏览器服务器端设置监控线程,与浏览器内核线程并行工作,可实时监控程序脚本是否正常执行,以防止程序脚本如JavaScript脚本执行时间过长进入死循环而导致整个平台瘫痪;该监控线程还可以监控超时事件,如此,可协助浏览器内核线程监控一些计时器到时后需要执行的任务,在计时器到时后将需要执行的任务放入相应事件队列,以备浏览器内核线程调用执行;该监控线程还可以随时增加需要监控的其他任务,协助浏览器内核线程完成对指定任务的监控。也就是说,为了保障浏览器内核程序安全、稳定地运行在手机浏览器服务器端,有效规避恶意网页代码导致的服务器瘫痪,防止不良页面代码对服务器提供的服务造成危害,本发明提出的运行在后台服务器的解决方案基于手机浏览器内核的双线程模式实现。
本发明中,由于设置了监控线程对浏览器内核线程执行程序脚本进行监控,这样,可及时发现服务器端浏览器可能出现的问题,避免整个平台不能运转,也不会影响到很多用户的使用。本发明中仅增加了监控线程,来协助浏览器内核线程完成相应工作,不会增加服务器端的太多负荷,能够简单方便的实现监控。
本发明增加监控线程,是与浏览器内核线程并行工作,对原有浏览器内核线程获取网页数据以及对网页数据的处理没有任何影响,因此,不会存在交互差、以及后台服务器仅作为中转站仅用于过滤数据的问题。
本发明中的监控线程,是与浏览器内核线程是并列的两个线程,相互独立执行、互不影响,两者之间仅通过对各个队列,如:时间事件队列、监控任务队列的处理发生关联,因此,不会造成程序语句如JavaScript语句执行的频繁中断,也不会因为增加程序脚本如JavaScript脚本的代码,造成代码质量下降和代码执行效率降低。另外,由于所设置的监控线程支持对浏览器内核线程新增监控任务的监控,无需对浏览器内核线程做很大改动,具备足够的可扩展性和更强的适用性。
附图说明
图1为现有技术中带后台处理的浏览器的实现过程示意图;
图2为现有技术中保证在手机浏览器服务器端正常运行手机浏览器的一种解决方案实现流程示意图;
图3为本发明中手机浏览器服务器端实现浏览器双线程模式的关系示意图;
图4为本发明中监控线程自身的实现流程示意图;
图5为本发明中监控线程对JS的执行进行监控的实现流程示意图;
图6为本发明中监控线程对需执行任务进行监控的实现流程示意图。
具体实施方式
本发明的基本思想是:在手机浏览器服务器端设置监控线程,与浏览器内核线程并行工作,对浏览器内核线程执行的程序脚本是否正常进行监控,并对浏览器内核线程指定的需执行任务进行监控,在计时器超时时将需执行任务放入时间事件队列,提供给浏览器内核线程处理。
这里,所述程序脚本可以是JavaScript脚本,相应的,程序脚本执行为JS执行。下文以程序脚本为JavaScript脚本为例,说明本发明的实现过程及服务器端结构,监控其他程序脚本时,可采用类似过程和结构。
针对服务器端浏览器遭遇恶意网页代码时不能自行关闭网页这一问题,本发明提出的解决方案就是:在手机浏览器服务器端运行的浏览器内核线程之外,再执行一个单独的监测线程,专门用以监控浏览器运行过程中的异常情况,比如:某段JavaScript执行时间超时等等。另外,考虑到手机浏览器服务器端不宜开辟过多线程,否则会导致不稳定及性能下降的问题,本发明仅采用双线程模式,即:在手机浏览器服务器端运行一个浏览器内核线程、一个针对浏览器的监控线程。
具体的,浏览器内核线程与监控线程之间的关系如图3所示,在手机浏览器服务器端并行运行有浏览器内核线程30和监控线程31,浏览器内核线程30和监控线程31构成浏览器服务器端的双线程模式,该双线程结构可以位于图1所示的后台服务器中;浏览器内核线程30和监控线程31之间通过时间事件队列33和监控任务队列34相关联。当手机浏览器用户需要访问某个网页或进行网页操作时,手机浏览器客户端会发送请求到后台服务器端,这些请求存储在用户请求队列32中,会依次调度给浏览器内核线程进行处理。其中,浏览器内核线程完成的功能包括:解析页面、执行JavaScript脚本、响应用户操作、生成简单页面推送给客户端等等。
如图3所示,浏览器内核线程30所实现的功能中,有三部分子功能与监控线程31相关,具体是:第一,浏览器内核线程30在执行JS前需要发送请求监控消息给监控线程31,以触发监控线程31对JS是否正常执行进行监控,相应的,执行JS正常结束后需要取消监控,如图3中30a所示;第二,浏览器内核线程30会执行超时(Timeout)消息,对监控线程31放置于时间事件队列33中需执行的任务作为事件进行处理,如图3中的30b所示;第三,浏览器内核线程30会向监控线程31指定一些除监控JS执行和监控需执行任务以外的其他监控任务,由监控线程31完成对相应监控任务的监控,如图3中30c所示;上述三个部分相互独立完成,可以同时具备三个部分,也可以具备其中一部分或两部分。
监控线程31中与浏览器内核线程30三部分子功能相对应的子功能包括:第一,对浏览器内核线程30可能出现的不良状况进行监控,如:JavaScript脚本由于产生死循环执行时间过长,具体的,监控线程31在预先设置的JS执行时间到时,如果JS还未执行完,则强制结束JS的执行,如图3中31a所示;第二,针对延迟事件,比如:JavaScript脚本中的setTimeout和setTimeInterval函数,它们指定一段时间后浏览器需要执行的任务,这种可以请求监控线程帮忙计算时间,具体的,计时器时间到时,监控线程31将需要执行的任务添加到时间事件队列中,以便调度给浏览器内核线程30执行,如图3中31b所示;第三,监控线程31可以执行浏览器内核线程30指定的其他监控任务,如图3中31c所示,监控线程31有足够的可扩展性,能方便地添加各种其他监控需求。
下面结合附图分别对监控线程的整体流程、监控线程对JavaScript脚本执行监控的流程、以及监控线程对需执行任务进行监控的流程进行详细描述。
参照图3,监控线程所执行的任务是从监控任务队列34中取出监控任务,并在等待指定时间后调用任务所指定的操作,具体的监控线程的处理流程如图4左侧虚框中所示,包括:查看当前监控任务队列中是否有监控任务,如果监控任务队列中没有监控任务,则监控线程进入睡眠状态;如果监控任务队列中有监控任务,则根据预定执行时间找到最先需要执行的任务,计算预定执行时间与当前时间的差,得到需要等待的时间,然后进入等待睡眠状态;休眠所计算的需等待时间后,监控线程开始执行任务,执行结束后,则进入新一轮的循环返回查看状态,监控线程是循环执行的。
当外界线程向监控任务队列中添加新任务时,比如:当浏览器内核线程需要监控线程进行监控时,就会向监控任务队列中发送监控任务,如图4右侧所示,浏览器内核线程将新任务添加到监控任务队列中,如果此时监控线程处于休眠状态,则会唤醒处于睡眠状态的监控线程,迫使监控线程重新回到原点进行监控任务的调度。
综上所述,监控线程就是在不断执行监控任务队列中监控任务的过程,只是这些监控任务的特殊之处是有时间性,必须在预定时间之后执行。
随着互联网的发展,目前的绝大多数WEB网页都是动态网页,与用户之间的交互是非常普遍的,这主要在于JavaScript脚本语言在网页中的广泛使用。正因为JavaScript的强大功能,使某些恶意代码会随着网址的被访问而传到浏览器上。通常,对于手机浏览器客户端来说,网页出现异常,用户可以自行点击关闭,结束对当前网址的访问;但对于手机浏览器服务器端来说,无法自行关闭,因此,本发明提出浏览器双线程模式来解决可能出现的网页异常情况。
在双线程模式下,浏览器内核线程每次执行JavaScript脚本之前都要向监控线程发送监控JS执行的监控任务,并设定一个时间t,比如3秒;当时间t过后,JavaScript脚本如果还未结束,则必须强行结束JavaScript的执行。具体监控线程对JS的执行进行监控的实现流程如图5所示,由左侧虚框内的浏览器内核线程与右侧虚框内的监控线程相互匹配实现,包括:
步骤11:在执行JavaScript脚本之前,需要向监控线程发送监控JS执行的监控任务并设置运行(Running)标志,该监控任务告知监控线程;
在t秒时间内,如果JavaScript脚本的状态仍是Running,则强行结束JavaScript脚本的执行;而如果t秒后JavaScript脚本的执行状态不为Running,则不需要做任何动作。
步骤12:浏览器内核线程开始执行JavaScript脚本;
步骤13:浏览器内核线程正常执行完JavaScript脚本后,取消Running标志,如果步骤11中发送的监控任务还没有执行,则使相应监控任务失效。
采用监控线程后,后台服务器端的浏览器内核线程可以放心地执行JavaScript脚本,而不用担心死循环或其它原因造成超时,进而导致的服务器处于停滞状态的问题发生。
一般,所有与浏览器内核相关的操作都由浏览器内核线程执行,但时间控制可由监控线程来协助计算和监控时间,因此,如图3所示,本发明中设置有时间事件队列。比如:JavaScript中有两个函数setTimeOut和setTimeInterval,这两个函数都是要求在一段时间后执行指定的操作,从setTimeout(或setTimeInterval)开始,指定时间过后,监控线程就通过时间事件队列告知浏览器内核线程,可以执行该操作了;当浏览器内核再次调度队列时,则可以执行该事件了。具体的监控线程对需执行任务进行监控的实现流程如图6所示,包括:
步骤21:开始执行setTimeOut或setTimeInterval等与时间事件相关的函数;
步骤22:浏览器内核线程包装好需要执行的任务,并计算出具体执行的时间;
步骤23:浏览器内核线程将监控任务发送给监控线程,由监控线程去监控具体时间,如果监控线程发现时间到了,则加入到时间事件队列中。
这样,当浏览器内核线程再次调度时,会查找有没有时间事件可以执行,如果有的话就执行,如图1所示选择要处理的请求或事件。
本发明的双线程模式将监控任务包装起来,可以大大增加程序的可扩展性,如果有某些模块需要被监控的话,只需要在进入模块前发送监控请求到监控任务队列中,监控线程就会按照包装任务的要求对相应模块进行监控。举个简单的例子,比如:页面驻留内存时间超时,则可通过监控线程在超时后将驻留页面从内存中删除,以防止页面长期驻留内存造成服务器压力变大。可见,本发明可以很容易将任务添加进来,纳入监控线程的监控范围。
为了实现上述方法,本发明还提供了一种手机浏览器服务器端,包括浏览器内核线程单元、监控线程单元和时间事件队列;其中,
浏览器内核线程单元,用于发送指定的监控任务,执行JavaScript脚本;这里,所述指定的监控任务可以是在执行JavaScript脚本前发送的监控JS执行的监控任务,也可以是一些延迟一段时间后需执行的监控任务,还可以是除监控JS执行和监控需执行任务以外的其他监控任务;
所述监控线程单元,用于执行对监控任务的监控,并在JS执行时间到时对未结束执行的JS强制结束JS的执行,在计时时间到时将需要执行的任务放入时间事件队列;这里,所述监控任务包括但不限于对JS执行的监控、对计时时间到后需要执行的任务的监控;
所述时间事件队列,用于保存监控线程单元放置的需执行任务,并将需执行任务作为事件提供给浏览器内核线程单元执行。
所述监控线程单元,还用于对除监控JS执行和监控需执行任务以外的其他监控任务进行监控。
相应的,该手机浏览器服务器端还包括监控任务队列,其中,所述监控任务队列,用于保存所有监控任务,供监控线程单元获取并执行监控;所述浏览器内核线程单元发送指定的监控任务就是将监控任务保存到监控任务队列中,所述监控任务为监控JS执行的监控任务、和/或需执行的任务、和/或其他监控任务。
该手机浏览器服务器端还包括用户请求队列,用于放置用户请求,并由浏览器内核线程单元选择执行。
本发明除了可以用于JavaScript环境外,还可以适用于VBScript、DocumentObjectModel、Layers和CascadingStyleSheets等环境,以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种手机浏览器服务器端实现浏览器双线程模式的方法,其特征在于,在手机浏览器服务器端设置监控线程;该方法还包括:
浏览器内核线程在执行程序脚本之前,向监控线程发送监控程序脚本执行的监控任务并设置运行标志;监控线程对浏览器内核线程执行的程序脚本是否正常进行监控,并在程序脚本执行时间到时对未结束执行的程序脚本强制结束;
监控线程对浏览器内核线程指定的需执行任务进行监控,在计时器超时时将需执行任务放入预设的时间事件队列;
所述监控线程对浏览器内核线程指定的需执行任务进行监控之前,该方法还包括:浏览器内核线程包装好需执行的任务,并计算出具体执行的时间;将监控任务发送给监控线程,由监控线程监控是否到时。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:浏览器内核线程在程序脚本正常执行结束后,取消运行标志使所述监控任务失效。
3.根据权利要求1所述的方法,其特征在于,所述监控线程对浏览器内核线程指定的需执行任务进行监控为:
查看当前是否有监控任务,如果没有监控任务,则监控线程进入睡眠状态;如果有监控任务,则根据预定执行时间找到最先需要执行的任务,计算预定执行时间与当前时间的差,得到需等待时间后进入等待睡眠状态;休眠需等待时间后,监控线程开始执行任务,执行结束后返回查看状态。
4.根据权利要求1所述的方法,其特征在于,该方法还包括:浏览器内核线程向监控线程指定除监控程序脚本执行和监控需执行任务以外的其他监控任务,监控线程完成对相应监控任务的监控。
5.根据权利要求1至4任一项所述的方法,其特征在于,该方法还包括:设置监控任务队列;
相应的,所述浏览器内核线程将监控程序脚本执行的监控任务保存在监控任务队列中;和/或将需执行的任务作为监控任务保存在监控任务队列中;和/或将其他监控任务保存在监控任务队列中。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述程序脚本为JavaScript脚本;所述程序脚本执行为JS执行。
7.一种手机浏览器服务器端,其特征在于,该手机浏览器服务器端包括浏览器内核线程单元、监控线程单元和时间事件队列;其中,
浏览器内核线程单元,用于发送指定的监控任务,执行程序脚本;所述发送指定的监控任务包括在执行程序脚本之前,向监控线程发送监控程序脚本执行的监控任务并设置运行标志;
监控线程单元,用于对浏览器内核线程单元指定的需执行任务进行监控,并在程序脚本执行时间到时对未结束执行的程序脚本强制结束,在计时器超时时将需执行的任务放入时间事件队列;其中,所述监控线程对浏览器内核线程指定的需执行任务进行监控之前,浏览器内核线程包装好需执行的任务,并计算出具体执行的时间;将监控任务发送给监控线程,由监控线程监控是否到时;
所述时间事件队列,用于保存监控线程单元放置的需执行任务,并将需执行任务作为事件由浏览器内核线程单元获取并执行。
8.根据权利要求7所述的手机浏览器服务器端,其特征在于,所述监控线程单元,还用于对除监控程序脚本执行和监控需执行任务以外的其他监控任务进行监控。
9.根据权利要求7所述的手机浏览器服务器端,其特征在于,该手机浏览器服务器端还包括监控任务队列,用于保存所有监控任务,由监控线程单元获取并执行监控。
10.根据权利要求7、8或9所述的手机浏览器服务器端,其特征在于,该手机浏览器服务器端还包括用户请求队列,用于放置用户请求,并由浏览器内核线程单元选择执行。
11.根据权利要求7、8或9所述的手机浏览器服务器端,其特征在于,所述程序脚本为JavaScript脚本;所述程序脚本执行为JS执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010254326.9A CN102377799B (zh) | 2010-08-11 | 2010-08-11 | 手机浏览器服务器端及其实现浏览器双线程模式的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010254326.9A CN102377799B (zh) | 2010-08-11 | 2010-08-11 | 手机浏览器服务器端及其实现浏览器双线程模式的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102377799A CN102377799A (zh) | 2012-03-14 |
CN102377799B true CN102377799B (zh) | 2016-01-13 |
Family
ID=45795754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010254326.9A Active CN102377799B (zh) | 2010-08-11 | 2010-08-11 | 手机浏览器服务器端及其实现浏览器双线程模式的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102377799B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102655531A (zh) * | 2012-04-17 | 2012-09-05 | 深圳市万兴软件有限公司 | 一种基于互联网的数据分享方法及电子终端 |
CN104063461B (zh) * | 2012-05-02 | 2018-10-12 | 北京奇虎科技有限公司 | 处理用户访问网页的请求的方法及系统 |
CN104951361B (zh) * | 2014-03-27 | 2018-10-09 | 阿里巴巴集团控股有限公司 | 一种定时任务的触发方法和装置 |
CN106095452A (zh) * | 2016-06-15 | 2016-11-09 | 武汉斗鱼网络科技有限公司 | 一种基于javascript的主动监听方法及装置 |
CN108111565B (zh) * | 2016-11-25 | 2020-08-04 | 腾讯科技(深圳)有限公司 | 消息传输方法和装置 |
CN108509260B (zh) * | 2018-01-31 | 2021-08-13 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
CN110198324B (zh) * | 2018-02-26 | 2021-12-14 | 腾讯科技(深圳)有限公司 | 数据监控方法、装置、浏览器及终端 |
CN109284180B (zh) * | 2018-08-30 | 2021-06-18 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1506826A (zh) * | 2002-12-09 | 2004-06-23 | 联想(北京)有限公司 | 计算机应用软件自纠错自重起方法 |
CN101080055A (zh) * | 2006-12-21 | 2007-11-28 | 腾讯科技(深圳)有限公司 | 一种基于手机浏览器快速浏览网页的方法、系统及设备 |
CN101290587A (zh) * | 2008-06-12 | 2008-10-22 | 中兴通讯股份有限公司 | 一种实现进程启动和监控的方法 |
CN101296255A (zh) * | 2008-06-30 | 2008-10-29 | 腾讯科技(深圳)有限公司 | 网页浏览方法、系统、代理服务器和手机浏览器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7330894B2 (en) * | 2002-04-19 | 2008-02-12 | International Business Machines Corporation | System and method for preventing timeout of a client |
-
2010
- 2010-08-11 CN CN201010254326.9A patent/CN102377799B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1506826A (zh) * | 2002-12-09 | 2004-06-23 | 联想(北京)有限公司 | 计算机应用软件自纠错自重起方法 |
CN101080055A (zh) * | 2006-12-21 | 2007-11-28 | 腾讯科技(深圳)有限公司 | 一种基于手机浏览器快速浏览网页的方法、系统及设备 |
CN101290587A (zh) * | 2008-06-12 | 2008-10-22 | 中兴通讯股份有限公司 | 一种实现进程启动和监控的方法 |
CN101296255A (zh) * | 2008-06-30 | 2008-10-29 | 腾讯科技(深圳)有限公司 | 网页浏览方法、系统、代理服务器和手机浏览器 |
Non-Patent Citations (1)
Title |
---|
手机浏览器页面解析服务器海量日志模块设计与实现;方圆;《北京邮电大学硕士研究生学位论文》;20100110;正文第2章-第4章 * |
Also Published As
Publication number | Publication date |
---|---|
CN102377799A (zh) | 2012-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102377799B (zh) | 手机浏览器服务器端及其实现浏览器双线程模式的方法 | |
CN110908879B (zh) | 埋点数据的上报方法、装置、终端和存储介质 | |
CN102855318B (zh) | 网页预加载方法与系统 | |
JP6797877B2 (ja) | ウェブアプリケーションを実施する方法、装置、サーバ、及びシステム | |
CN108572965B (zh) | 一种资源加载方法及装置 | |
CA2839006C (en) | Methods for making ajax web applications bookmarkable and crawlable and devices thereof | |
CN102867007B (zh) | 网页浏览方法及装置 | |
US8239490B2 (en) | Exposing resource capabilities to web applications | |
CN103810176B (zh) | 一种网页信息的预取访问方法和装置 | |
WO2013097592A1 (zh) | 脚本加载技术 | |
CN110224896B (zh) | 一种网络性能数据采集方法、装置及存储介质 | |
WO2016150324A1 (zh) | 一种页面模块的渲染方法、装置以及显示设备 | |
CN105528369B (zh) | 网页转码方法、装置以及服务器 | |
CN102819553B (zh) | 一种进行页面交互的方法及装置 | |
CN109343908A (zh) | 一种延迟加载js脚本的方法和装置 | |
US9916391B2 (en) | Method, apparatus and terminal for webpage content browsing | |
CN112052163A (zh) | 高并发网页压力测试方法、装置、电子设备以及存储介质 | |
CN110489683A (zh) | 网页的缓存方法及装置存储介质、计算机设备 | |
CN115509531A (zh) | 基于前端技术的微前端实现方法、装置、终端及存储介质 | |
CN115421693A (zh) | 微前端架构的实现方法、装置、计算机设备和存储介质 | |
CN104731902B (zh) | 电子书数据处理方法与装置 | |
CN112860844A (zh) | 案件线索处理系统、方法、装置和计算机设备 | |
JP2009080587A (ja) | データ転送サーバ | |
WO2021226954A1 (zh) | 信息爬取方法、装置、电子设备及存储介质 | |
CN102902787B (zh) | 一种浏览器及其获取dns解析数据的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221118 Address after: 1402, Floor 14, Block A, Haina Baichuan Headquarters Building, No. 6, Baoxing Road, Haibin Community, Xin'an Street, Bao'an District, Shenzhen, Guangdong 518133 Patentee after: Shenzhen Yayue Technology Co.,Ltd. Address before: 2, 518044, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |