CN110020314B - Web页面数据处理方法、装置、计算设备和存储介质 - Google Patents
Web页面数据处理方法、装置、计算设备和存储介质 Download PDFInfo
- Publication number
- CN110020314B CN110020314B CN201711397002.9A CN201711397002A CN110020314B CN 110020314 B CN110020314 B CN 110020314B CN 201711397002 A CN201711397002 A CN 201711397002A CN 110020314 B CN110020314 B CN 110020314B
- Authority
- CN
- China
- Prior art keywords
- memory address
- target
- javascript
- data
- web page
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种Web页面数据处理方法、装置、计算设备和存储介质。该方法包括:JavaScript引擎针对目标数据流创建目标JavaScript对象;JavaScript引擎将目标JavaScript对象与预定的内存地址或内存地址范围相绑定;Web页面经由JavaScript引擎从预定的内存地址或内存地址范围中持续获取目标数据流。由此,通过JavaScript引擎提供一个内存地址或地址范围来保存使用者的数据,而该内存不会在每次使用后被引擎释放,而是重复利用,由此避免频繁分配新内存而触发引擎的内存回收机制,从而提升处理数据的效率。
Description
技术领域
本发明涉及Web流程交互领域,尤其涉及一种Web页面数据处理方法、
背景技术
随着Web技术的发展与普及,Web页面的使用体验越来越接近原生应用的使用体验。由此,能够在不影响使用体验的情况下,使得用户得以免除本地安装应用的繁琐手续和对存储空间的占用,从而提升用户友好度。
不过基于Web页面应用的功能实现也有一定的缺陷。Web页面通常需要利用JavaScript(其后简称为JS)语言来实现一些动态功能,而利用JS处理大块数据在如今的Web应用中也越来越常见,例如Web应用中接收视频流以添加特效等。在JS中频繁处理大块数据时,由于存在着JS引擎与基于JS开发的页面应用的数据传递,这种传递会直接带来严重的效率损耗。不但数据从JS引擎中的C/C++语言类型的数据对象转为JS页面的JS语言类型的数据对象存在着效率损耗,同时由于数据量较大,这种数据传递会导致JS引擎不断分配新的内存来进行数据传递,不断分配新的内存使用后又会触发JS引擎的内存回收机制(称为GC-Garbage Collection),内存回收机制同样会消耗大量的时间,造成卡顿丢帧等,直接影响到Web应用的使用体验。
为此,期望提供一种新的Web页面的数据交互方法,能够提升Web页面应用的使用体验。
发明内容
本发明的目的是提供一种Web页面数据处理方法、装置、计算设备和存储介质,通过JavaScript引擎提供一个专门的内存范围来保存使用者的数据,而该段内存不会在每次使用后被引擎释放,而是重复利用,由此避免频繁分配新内存而触发引擎的内存回收机制,从而提升处理数据的效率。
根据本发明的一个方面,提供了一种Web页面数据处理方法,该方法可以包括:JavaScript引擎针对目标数据流创建目标JavaScript对象。JavaScript引擎将目标JavaScript对象与预定的内存地址或内存地址范围相绑定。Web页面经由JavaScript引擎从预定的内存地址或内存地址范围中持续获取目标数据流。其中,JavaScript引擎创建的目标JavaScript对象优选地可以是ArrayBuffer类型的数据对象。预定的内存地址或内存地址范围优选地具有不会引起JavaScript引擎的内存回收机制的固定或可变大小。目标数据流优选地可以是每秒30帧或以上的视频数据流。
由此,通过JavaScript引擎提供一个专门的内存范围来保存使用者的数据,而该段内存不会在每次使用后被引擎释放,而是重复利用,由此避免频繁分配新内存而触发引擎的内存回收机制,从而提升处理数据的效率。
在一个实现中,在目标数据流获取期间,JavaScript引擎可以始终保持目标JavaScript对象不释放,Web页面则从与该目标JavaScript对象相绑定的预定的内存地址或内存地址范围中持续获取该目标数据流。在另一实现中,在目标数据流获取期间,JavaScript引擎可以释放在前创建的目标JavaScript对象并且创建新的目标JavaScript对象,但通过将该新的目标JavaScript对象仍然与预定的内存地址或内存地址范围相绑定,使得Web页面从仍然可以预定的内存地址或内存地址范围中持续获取目标数据流。在其他实现中,可以结合上述两种实现。JavaScript引擎可以保持部分目标JS对象不释放,释放部分JS对象并相应创建新的JS对象,只要保持这些对象与预定的内存地址或地址范围相绑定即可。这样能够更为灵活地在不引发内存回收机制的情况下实现目标视频流的持续获取。
Web页面可以通过目标地址来实现对存入预定内存地址的内容的持续获取。其中,JavaScript引擎将目标JavaScript对象与预定的内存地址或内存地址范围相绑定优选地可以包括:JavaScript引擎为目标JavaScript对象分配目标数据地址;以及将目标数据地址与预定的内存地址或内存地址范围相绑定。进一步地,Web页面经由JavaScript引擎从预定的内存地址或内存地址范围中持续获取目标数据流优选地可以包括:Web页面向JavaScript引擎请求目标数据地址的数据;JavaScript引擎将从目标数据地址获取的数据存入与JavaScript对象相对应的预定内存地址或内存地址范围;以及Web页面从预定内存地址或内存地址范围获取JavaScript引擎存入的数据。
由此,Web页面就能够以预定的频率持续获取由JavaScript引擎不断存入的数据,以实现对目标数据流的获取。
根据本发明的另一方面,还提供了一种Web页面数据处理装置,该装置可以包括:JavaScript引擎模块,用于针对目标数据流创建目标JavaScript对象,并将目标JavaScript对象与预定的内存地址或内存地址范围相绑定;Web页面模块,用于经由JavaScript引擎模块从预定的内存地址或内存地址范围中持续获取目标数据流。其中,JavaScript引擎模块创建的目标JavaScript对象优选地可以是ArrayBuffer类型的数据对象。预定的内存地址或内存地址范围具有不会引起JavaScript引擎模块的内存回收机制的固定或可变大小。目标数据流优选地可以是每秒30帧或以上的视频数据流。
Web页面模块可以通过目标地址来实现对存入预定内存地址的内容的持续获取。其中,JavaScript引擎模块优选地可以包括:JavaScript引擎地址分配模块,用于为目标JavaScript对象分配目标数据地址;以及JavaScript引擎地址绑定模块,用于将目标数据地址与预定的内存地址或内存地址范围相绑定。进一步地,Web页面模块优选地可以包括:数据请求模块,用于向JavaScript引擎模块请求目标数据地址的数据;所述JavaScript引擎模块将从目标数据地址获取的数据存入与JavaScript对象相对应的预定内存地址或内存地址范围;以及数据获取模块,用于从预定内存地址或内存地址范围获取JavaScript引擎模块存入的数据。
由此,数据获取模块就能够以预定的频率持续获取由JavaScript引擎模块不断存入的数据,以实现对目标数据流的获取。
根据本发明的另一方面,还提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行上文述及的方法。
根据本发明的另一方面,还提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行上文述及的方法。
由此,通过将JS对象的数据持续存入一块预先划定的内存区域,并使得Web页面或其上的应用持续从该区域中读取所需的数据,就能够避免在使用JS引擎处理大块数据时由于JS引擎不断分配新的内存来进行数据传递而频繁触发的内存回收机制问题,从而能够提升浏览器处理大块数据的速度,从而例如增加其可实现的帧率。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1是根据本发明实施方式提供的具有Webkit内核的处理模块的结构。
图2示出了现有技术中使用者通过JS引擎获取数据地址A的内容的示意图。
图3是根据本发明一个实施例的Web页面数据处理方法的流程图。
图4示出了根据本发明一个实施例的数据传递方案的示意图。
图5示出了根据本发明一个实施例的Web页面数据处理装置的结构框图。
图6示出了根据本发明一个实施例的计算设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在描述具体方案之前,为了方便对本发明方案的准确把握,首先对浏览器工作原理进行简要的介绍。
浏览器是一种运行于终端设备上的软件,主要是用于显示网页。浏览器从架构上可以分为两个部分,即内核和外壳。浏览器内核负责对网页语法的解释(如HTML、JavaScript)并渲染(显示)网页,即浏览器通过内核对网页进行解析和渲染。浏览器外壳主要处理浏览器外观界面、操控体验等。
浏览器内核是浏览器核心部分。通常,浏览器内核也被称为渲染引擎。渲染引擎用于将HTML/CSS/JavaScript文本及其相应的资源文件转换成图像结果进行显示。目前市场上流行的浏览器虽然种类繁多,但由于目前大多数浏览器的内核均采用Webkit作为内核,下面对具有Webkit内核的处理模块进行详细介绍。
图1是根据本发明实施方式提供的具有Webkit内核的处理模块的结构。该处理模块100可以是在各类计算设备上使用的模块,包括但不限于诸如智能电话、平板电脑、便携式计算机的各类移动设备,以及诸如台式计算机的非便携式设备。本领域技术人员应该理解,虽然未在图中示出,但包括处理模块的计算设备还可以具有存储单元、输入输出设备、联网装置以及其他在此未提及的装置以实现各种类型的功能。
处理模块100可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理模块100可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器100可以使用定制的电路实现,例如特定用途集成电路(application specific integrated circuit,ASIC)或者现场可编程逻辑门阵列(field programmable gate arrays,FPGA)。在一些实施方式中,处理模块100可以是类似的电路执行存储在自身上的可执行指令。在另外一些实施方式中,处理模块100可以执行存储在存储子系统200上的可执行指令。
在图1示出的实施方式中,处理模块100设有操作系统110和运行在操作系统110上的浏览器120。浏览器120包括Webkit内核123、嵌入式接口122和一些通过所述嵌入式接口122与Webkit内核123交互的浏览器插件121。WebKit内核123(即渲染引擎)又可以包括排版引擎(Webcore)1231、JS引擎1232和WebKit Ports移植部分1233。
在图1示出的结构中,排版引擎1231又包括三个模块:解析模块,排版模块和渲染模块。其中,解析模块又可以包含HTML解析器和CSS解析器。HTML解析器包括标记生成器和树构造器。标记生成器用于将输入的网页内容(通常是XML文档格式)解析成多个HTML标记。HTML标记包括起始标记、结束标记、属性名称和属性值。标记生成器用于识别这些标记,并传递给树构造器,然后接收下一个字符以识别下一个标记;如此反复直到输入的结束。
JS引擎1232用于解析JavaScript语言,通过执行JavaScript语言来实现网页的动态效果。JS引擎可以是JavaScriptCore引擎或V8引擎,JavaScriptCore引擎是Webkit中的默认JS引擎。在Google的Chromium开源项目中,JavaScriptCore引擎被替换为V8引擎,V8引擎是由美国Google开发的开源JavaScript引擎。
WebKit Ports移植部分1233包括网络栈、硬件加速、视频、文字、图片解码、加载模块(网络栈)和其他功能模块。Webkit的资源加载由各个移植来实现,所以每个移植的网络实现方式可能会不一样。
通过适当的编程,处理模块100为计算设备可以实现多种类型的功能。例如,处理模块100通过联网装置从服务器下载网页内容至存储单元。然后,处理模块100从存储单元中读取网页文件至排版引擎1231。排版引擎1231的解析模块对网页进行解析后构建成一颗DOM树。当DOM树建立的时候,排版引擎1231的排版模块接收CSS解析器的样式信息,构建一个新的内部绘图模型(Renderobject Tree,渲染对象树,又叫排版树),并由排版模块计算模型内各个元素的位置和大小,然后由渲染模块完成从模型到图形的绘制。当网页需要展示动态效果时,则可通过JS引擎1232解析JavaScript语言来实现。
需要理解的是,上文对功能模块的描述是为了便于理解,而非对功能部件特定的物理配置。而且,这些功能模块不需要与物理模块一一对应。模块可以被配置成用来完成各种操作,例如通过编程或设置合适的控制电路,模块也可能会根据初始设置重新被配置。本发明的实施例可以在各种设备包括电子设备中,通过使用硬件和软件的结合来实现。
如前所述,随着Web技术,尤其是HTML5技术不断进步与发展,基于HTML5开发的Web页面的体验也越来越接近原生应用的体验。不过基于HTML5技术也有一定的缺陷,例如JavaScript处理大块数据(例如,大于等于640*480比特的数据量)的场景。JavaScript处理大块数据在如今的Web应用中越来越常见,例如Web应用中接收摄像头做VR/AR特效,例如Web应用中接收视频流添加特效等。在JavaScript中频繁处理大块数据时(例如,每秒30帧及以上的数据处理频率),由于存在着JavaScript引擎与基于JavaScript开发的页面应用的数据传递,这种传递会直接带来严重的效率损耗。不但数据从JavaScript引擎中的C/C++语言类型的数据对象转为JavaScript页面的JavaScript语言类型的数据对象存在着效率损耗,同时由于数据量较大,这种数据传递会导致JavaScript引擎不断分配新的内存来进行数据传递,不断分配的新的内存使用后又会触发JavaScript引擎的内存回收机制(称为GC-Garbage Collection),内存回收机制同样会消耗大量的时间,造成卡顿丢帧等,直接影响到Web应用的使用体验。应该理解的是,在此对“大块”数据和“频繁”处理的举例是为了方便对本文的理解,对数据是否“大块”以及处理是否“频繁”的划分会基于处理技术和内存技术的发展而有所变化,因此其数值不应理解为对本发明原理的任何限制。
图2示出了现有技术中使用者通过JS引擎获取数据地址A的内容的示意图。在Web页面中,当使用者需要持续获取数据流的数据时,例如Web页面上利用HTML5技术实现的视频播放器应用需要通过JavaScript引擎逐帧获取视频数据时,对于每一帧数据,JS引擎都会分配一块新的内存,然后把数据拷贝到新的内存中,然后提供给使用者。
具体如图所示,当使用者调用JS对象时,该对象从指定的数据地址A中获取数据,通过JavaScript引擎创建一个JS对象src给使用者。使用者获取对象src后,由于对象src直接与数据地址A绑定,因此对象src为只读对象。如果需要对数据进行操作,需要重新拷贝一份新的数据对象。使用者使用对象src做为参数传入JavaScript引擎,由JavaScript引擎创建一个新的JS对象data,拷贝对象src的内容至对象data后,将对象data回传给使用者。使用者获取js对象data,并进行相应地数据操作。
在这里,使用者可以是Web页面上例如使用HTML5技术实现的Web应用。src是用于指示源文件路径的JS对象的属性。data是JS对象本身指代的数据的JS对象属性。
由上可知,在现有方案中,使用者需要操作两次才能获取一次可操作的对象data,用户每次获取对象data时,JavaScript引擎都会创建一个新的对象data,多次调用后由于内存占用会触发JavaScript引擎的内存回收,一次内存回收会占用50ms左右的时间。
在JavaScript中传递处理大块数据时,影响页面数据处理效率的直接因素有两点。一是网页应用使用大块数据时生成JavaScript对象的时间消耗;二是由于数据量较大,直接导致JavaScript引擎会不断启动内存回收机制释放处理完毕的JavaScript对象时导致的时间消耗。
由于大块数据的JS对象与单字节数据的JS对象(例如一个字符“A”对应的JS对象)通常实际在JS引擎中生成的时间消耗是一样的。因此避免不必要的内存回收机制的触发是解决JavaScript中高频率下处理大块数据时效率低下的基本。
为了解决上述问题,本发明的发明人提出了一种新的数据处理方案。在JavaScript引擎中,向使用者提供一块内存地址,使用者的数据直接写入这块内存地址。JavaScript引擎提供一个专门的内存地址来保存使用者的数据,而该段内存不会在每次使用后被引擎释放,而是重复利用,避免频繁分配新内存而触发引擎的内存回收机制。
图3是根据本发明一个实施例的Web页面数据处理方法的流程图。该方法涉及Web页面与浏览器内核之间的流程交互;更具体地,涉及Web页面上例如基于HTML5技术实现的Web应用与例如图1中的JS引擎1232之间的流程交互。
在步骤S310,JavaScript引擎针对目标数据流创建目标JavaScript对象。在这里,可以是浏览器在获取到页面数据并进行初步解析后,判断出该Web页面存在需经由JS引擎持续获取的数据流。因此,可以在真正获取目标数据流之前,针对该数据流预先创建目标JS对象。
在一个实施例中,由JS引擎创建的目标对象可以是一个固定的ArrayBuffer类型的数据对象。该对象可用于分配一段可以存放数据的连续内存区域,以便例如后续步骤中对该对象的重复利用。
在步骤S320,JS引擎将目标JS对象与预定的内存地址或内存地址范围相绑定。随后在步骤S330,Web页面经由该JS引擎从预定的内存地址或内存地址范围中持续获取目标数据流。由此,通过JS引擎预先提供一个固定的ArrayBuffer类型的数据对象来保存使用者的数据,而该对象在每次使用后被重复利用而非被JS引擎释放,由此避免频繁创建JS对象所触发的JS引擎内存回收机制。
目标数据流指的是Web页面持续获取的数据。从狭义上理解,目标数据流可以是需要持续获取的流数据,例如,视频流,音频流或多媒体流,游戏流。目标数据流也可以指代含义更为广泛的、被Web页面持续获取的数据。例如,使用Web页面下载的应用在其整个下载持续期间内,也能看作是目标数据流。在本发明中,目标数据流当然可以包括狭义上需要持续获取的流数据,也可以包括其他需要持续获取的数据。在一个实施例中,只要持续获取的数据不存在前后依赖或存取竞争关系即可。在另一个实施例中,只要持续获取的数据存在前后依赖或存取竞争关系的内容所占据的内存范围不会引起JS引擎的内存回收机制即可。
通过将JS对象的数据持续存入一块预先划定的内存区域,并使得Web页面或其上的应用持续从该区域中读取所需的数据,就能够避免在使用JS引擎处理大块数据时由于JS引擎不断分配新的内存来进行数据传递而频繁触发的内存回收机制问题,从而能够提升浏览器处理大块数据的速度,从而例如增加其可实现的帧率。在一个实施例中,可以规定JS对象每次将持续获取的数据都存入一个固定的内存地址,并规定其可存入的最大长度。在另一个实施例中,可以规定JS对象将持续获取的数据依次存入预定地址范围内的不同内存地址(例如,在前后帧存在依赖性的情况下),并在随后使用新获取的数据依次进行盖写。换句话说,只要预定的内存地址或内存地址范围具有不会引起JS引擎的内存回收机制的大小即可,其大小是固定还是可变都不影响本发明的数据处理方案的实现。
在一个实施例中,在目标数据流获取期间,JavaScript引擎可以始终保持目标JavaScript对象不释放,Web页面则从与该目标JavaScript对象相绑定的预定的内存地址或内存地址范围中持续获取该目标数据流。在另一实现中,在目标数据流获取期间,JavaScript引擎可以释放在前创建的目标JavaScript对象并且创建新的目标JavaScript对象,但通过将该新的目标JavaScript对象仍然与预定的内存地址或内存地址范围相绑定,使得Web页面从仍然可以预定的内存地址或内存地址范围中持续获取目标数据流。在其他实现中,可以结合上述两种实现。JavaScript引擎可以保持部分目标JS对象不释放,释放部分JS对象并相应创建新的JS对象,只要保持这些对象与预定的内存地址或地址范围相绑定即可。这样能够更为灵活地在不引发内存回收机制的情况下实现目标视频流的持续获取。
在这里,“预定的内存地址或内存地址范围”可以指代多种情况。例如,“预定的内存地址”可以指代内存中以某一地址开始的大小固定或可变的地址范围。例如,将经由JS引擎的数据存取限定在以地址A开始的4M的内存段内。“预定的内存地址范围”可以指代内存中以某一地址开始的一定范围内的地址。例如,当存在多个JS对象的情况下,不同的JS对象可以将数据存储在以地址A开始的一段地址范围内的相应地址下。
在一个实施例中,Web页面可以通过目标地址来实现对存入预定内存地址的内容的持续获取。在这里,目标地址指的是Web页面或其上应用能够解读并通过其获取数据的地址,例如src属性后接的地址。例如,目标地址可以是指向存储在服务器或是本地上的视频内容的地址,上述视频内容例如可以通过流式传输的方式由Web页面经由JS引擎持续获取。目标地址也可以是例如特定设备的地址,例如,指向正在拍摄的摄像头或是正在录音的麦克风的地址。
在引入的目标地址概念的情况下,所述JavaScript引擎将所述目标JavaScript对象与预定的内存地址或内存地址范围相绑定可以包括:所述JavaScript引擎为所述目标JavaScript对象分配目标数据地址;以及将所述目标数据地址与预定的内存地址或内存地址范围相绑定。进一步地,所述Web页面经由所述JavaScript引擎从所述预定的内存地址或内存地址范围持续获取所述目标数据流则可以包括:所述Web页面向所述JavaScript引擎请求所述目标数据地址的数据;所述JavaScript引擎将从所述目标数据地址获取的数据存入与所述JavaScript对象相对应的所述预定内存地址或内存地址范围;以及所述Web页面从所述预定内存地址或内存地址范围获取所述JavaScript引擎存入的数据。
由此,Web页面就能够以预定的频率持续获取由所述JavaScript引擎不断存入的数据,以实现对所述目标数据流的获取。在这里,Web页面获取数据的频率可以与JS引擎存入数据的频率相同或不同。例如,JS引擎可以每次存入两帧最新画面,而Web页面则能够以更高的频率逐帧获取。在一个实施例中,目标数据流可以是每秒30帧或以上的视频数据流。
为了更好地理解本发明,现结合图4对本发明的数据处理方案的流程进行说明。图4示出了根据本发明一个实施例的数据传递方案的示意图。
如图4所示,可以设计一个管理者,用来创建并管理一个JS对象data。使用者在使用前,将数据地址A通过管理者提供的接口传入管理者中进行地址绑定。当后续使用者需要获取数据地址A的数据时,管理者将数据地址A的内容拷贝到js对象data,并回传给使用者。使用者获取js对象data,并进行其所需的数据操作。在这里,管理者可以是JS引擎,或其包括的一段代码,并且可以通过例如更新的浏览器应用来进行下发。
相比于图2所示的使用者需要操作两次才能获取可操作的对象的数据的方案,在图4所示的方案中,使用者操作一次就可以获取可操作的对象的数据。同样地,在现有方案中,使用者每次获取对象数据时,JavaScript引擎都会创建一个新的对象数据,多次调用后会由于内存占用而触发JS引擎的内存回收机制,一次内存回收会占用50ms左右的时间;而在图4所示方案中,管理者创建并管理目标数据流的生命周期。每次用户获取的对象数据都是同一个对象,由管理者负责将实现绑定的数据地址A的内容刷新到对象数据,因此不存在多次调用导致内存占用上升,因此也不会因为过于频繁的触发内存回收机制所占用的时间来影响数据处理效率。
在另一个实施例中,该管理者可以允许JS对象在每次使用后被释放,但是维持JS对象中存储数据用的内存不变,直到该段内存被管理者释放。在保持JS对象不释放的前例中,需要将内存保持在始终能存储大小变化的JS对象的大小。比如与4M内存相绑定的JS对象,该对象的大小就是4M。而在允许JS对象被释放的本例中,JS对象的大小是其自身数据结构的尺寸,比如可以只有20个字节。在这种情况下,即使有多个对象,所占内存大小也不会触发引擎进行垃圾回收,从而保证数据的高速存取。
图5是示出了根据本发明一实施例的数据处理装置500的结构框图。其中,数据处理装置500的功能模块可以由实现本发明原理的硬件、软件或硬件和软件的结合来实现。本领域技术人员可以理解的是,图5所描述的功能模块可以组合起来或者划分成子模块,从而实现上述发明的原理。因此,本文的描述可以支持对本文描述的功能模块的任何可能的组合、或者划分、或者更进一步的限定。
图5所示的数据处理装置500可以用来实现图3所示的数据处理方法,下面仅就数据处理装置500可以具有的功能模块以及各功能模块可以执行的操作做简要说明,对于其中涉及的细节部分可以参见上文结合图3的描述,这里不再赘述。
参见图5,该数据处理装置500可以包括JavaScript引擎模块510和Web页面模块520。其中,JavaScript引擎模块510可以用于针对目标数据流创建目标JavaScript对象,并将目标JavaScript对象与预定的内存地址或内存地址范围相绑定。Web页面模块520可以用于经由JavaScript引擎模块从预定的内存地址或内存地址范围中持续获取目标数据流。
JavaScript引擎模块可选地还可以包括JavaScript引擎地址分配模块511和JavaScript引擎地址绑定模块513。其中,JavaScript引擎分配模块511可以用于为目标JavaScript对象分配目标数据地址。JavaScript引擎绑定模块可以用于将目标数据地址与预定的内存地址或内存地址范围相绑定。
在一个实施例中,JavaScript引擎模块可以保持目标JavaScript对象不释放,Web页面模块从与目标JavaScript对象相绑定的所述预定的内存地址或内存地址范围中持续获取所述目标数据流。在另一个实施例中,JavaScript引擎模块可以释放创建的所述目标JavaScript对象,针对所述目标数据流创建新的目标JavaScript对象,并将所述新的目标JavaScript对象与所述预定的内存地址或内存地址范围相绑定;并且Web页面模块可以从与所述新的目标JavaScript对象相绑定的所述预定的内存地址或内存地址范围中持续获取所述目标数据流。在其他实施例中,可以对上述方案进行任意组合,以实现更为灵活的内存地址或地址范围的绑定。
Web页面模块可选地还可以包括数据请求模块521和数据获取模块523。数据请求模块521可以用于向JavaScript引擎模块请求目标数据地址的数据。所述JavaScript引擎模块将从目标数据地址获取的数据存入与JavaScript对象相对应的预定内存地址或内存地址范围。数据获取模块523可以用于从预定内存地址或内存地址范围获取JavaScript引擎模块存入的数据。
数据获取模块523优选地可以以预定的频率持续获取由JavaScript引擎模块不断存入的数据,以实现对目标数据流的获取。并且/或者,JavaScript引擎模块创建的目标JavaScript对象可以是ArrayBuffer类型的数据对象。并且/或者,预定的内存地址或内存地址范围可以具有不会引起JavaScript引擎模块的内存回收机制的固定或可变大小。并且/或者,目标数据流可以是每秒30帧或以上的视频数据流。
另外,本发明的数据处理方案还可以由一种计算设备实现。图6示出了根据本发明一个实施例的数据处理装置的结构框图。
参见图6,本发明的计算设备可以包括处理器610以及存储器620,存储器620上存储有可执行代码,当可执行代码被处理器610执行时,使处理器610执行上文述及的数据处理方法。具体实现过程可参见上文中的相关描述,在此不再赘述。
上文中已经参考附图详细描述了根据本发明的Web页面数据处理方法、装置和计算设备。
本发明通过在Web应用的大型数据处理的场景中新增一个管理者来避免频繁获取数据时每次所需的二次操作,同时也不会触发JavaScript引擎的内存回收,从而给数据本身的处理提供了更多的时间。
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (20)
1.一种Web页面数据处理方法,包括:
JavaScript引擎针对目标数据流创建目标JavaScript对象;
所述JavaScript引擎将所述目标JavaScript对象与预定的内存地址或内存地址范围相绑定;以及
Web页面经由所述JavaScript引擎从所述预定的内存地址或内存地址范围中持续获取所述目标数据流,
其中,所述目标JavaScript对象的目标数据流的数据被持续存入所述预定的内存地址或内存地址范围,以使得所述Web页面在不引发内存回收机制的情况下持续从所述预定的内存地址或内存地址范围中读取所需的数据,并且所述预定的内存地址或内存地址范围被重复利用。
2.如权利要求1所述的方法,其中,所述Web页面经由所述JavaScript引擎从所述预定的内存地址或内存地址范围中持续获取所述目标数据流包括:
在所述JavaScript引擎保持所述目标JavaScript对象不释放的情况下,Web页面从与所述目标JavaScript对象相绑定的所述预定的内存地址或内存地址范围中持续获取所述目标数据流。
3.如权利要求1所述的方法,其中,所述Web页面经由所述JavaScript引擎从所述预定的内存地址或内存地址范围中持续获取所述目标数据流包括:
JavaScript引擎释放创建的所述目标JavaScript对象并且针对所述目标数据流创建新的目标JavaScript对象;
所述JavaScript引擎将所述新的目标JavaScript对象与所述预定的内存地址或内存地址范围相绑定;以及
Web页面从与所述新的目标JavaScript对象相绑定的所述预定的内存地址或内存地址范围中持续获取所述目标数据流。
4.如权利要求1所述的方法,其中,所述JavaScript引擎将所述目标JavaScript对象与预定的内存地址或内存地址范围相绑定包括:
所述JavaScript引擎为所述目标JavaScript对象分配目标数据地址;以及
将所述目标数据地址与预定的内存地址或内存地址范围相绑定。
5.如权利要求4所述的方法,其中,所述Web页面经由所述JavaScript引擎从所述预定的内存地址或内存地址范围中持续获取所述目标数据流包括:
所述Web页面向所述JavaScript引擎请求所述目标数据地址的数据;
所述JavaScript引擎将从所述目标数据地址获取的数据存入与所述JavaScript对象相对应的所述预定内存地址或内存地址范围;以及
所述Web页面从所述预定内存地址或内存地址范围获取所述JavaScript引擎存入的数据。
6.如权利要求5所述的方法,其中,所述Web页面以预定的频率持续获取由所述JavaScript引擎不断存入的数据,以实现对所述目标数据流的获取。
7.如权利要求1所述的方法,其中,所述JavaScript引擎创建的目标JavaScript对象是ArrayBuffer类型的数据对象。
8.如权利要求1所述的方法,其中,所述预定的内存地址或内存地址范围具有不会引起所述JavaScript引擎的内存回收机制的固定或可变大小。
9.如权利要求1所述的方法,其中,所述目标数据流是每秒30帧或以上的视频数据流。
10.一种Web页面数据处理装置,包括:
JavaScript引擎模块,用于针对目标数据流创建目标JavaScript对象,并将所述目标JavaScript对象与预定的内存地址或内存地址范围相绑定;以及
Web页面模块,用于经由所述JavaScript引擎模块从所述预定的内存地址或内存地址范围中持续获取所述目标数据流,
其中,所述目标JavaScript对象的目标数据流的数据被持续存入所述预定的内存地址或内存地址范围,以使得所述Web页面在不引发内存回收机制的情况下持续从所述预定的内存地址或内存地址范围中读取所需的数据,并且所述预定的内存地址或内存地址范围被重复利用。
11.如权利要求10所述的装置,其中,所述JavaScript引擎模块保持所述目标JavaScript对象不释放,所述Web页面模块从与所述目标JavaScript对象相绑定的所述预定的内存地址或内存地址范围中持续获取所述目标数据流。
12.如权利要求10所述的装置,其中,所述JavaScript引擎模块释放创建的所述目标JavaScript对象,针对所述目标数据流创建新的目标JavaScript对象,并将所述新的目标JavaScript对象与所述预定的内存地址或内存地址范围相绑定;以及
所述Web页面模块从与所述新的目标JavaScript对象相绑定的所述预定的内存地址或内存地址范围中持续获取所述目标数据流。
13.如权利要求10所述的装置,其中,所述JavaScript引擎模块包括:
JavaScript引擎地址分配模块,用于为所述目标JavaScript对象分配目标数据地址;以及
JavaScript引擎地址绑定模块,用于将所述目标数据地址与预定的内存地址或内存地址范围相绑定。
14.如权利要求13所述的装置,其中,所述Web页面模块包括:
数据请求模块,用于向所述JavaScript引擎模块请求所述目标数据地址的数据;
所述JavaScript引擎模块将从所述目标数据地址获取的数据存入与所述JavaScript对象相对应的所述预定内存地址或内存地址范围;以及
数据获取模块,用于从所述预定内存地址或内存地址范围获取所述JavaScript引擎模块存入的数据。
15.如权利要求14所述的装置,其中,所述数据获取模块以预定的频率持续获取由所述JavaScript引擎模块不断存入的数据,以实现对所述目标数据流的获取。
16.如权利要求10所述的装置,其中,所述JavaScript引擎模块创建的目标JavaScript对象是ArrayBuffer类型的数据对象。
17.如权利要求10所述的装置,其中,所述预定的内存地址或内存地址范围具有不会引起所述JavaScript引擎模块的内存回收机制的固定或可变大小。
18.如权利要求10所述的装置,其中,所述目标数据流是每秒30帧或以上的视频数据流。
19.一种计算设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1-9中任何一项所述的方法。
20.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711397002.9A CN110020314B (zh) | 2017-12-21 | 2017-12-21 | Web页面数据处理方法、装置、计算设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711397002.9A CN110020314B (zh) | 2017-12-21 | 2017-12-21 | Web页面数据处理方法、装置、计算设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110020314A CN110020314A (zh) | 2019-07-16 |
CN110020314B true CN110020314B (zh) | 2023-09-29 |
Family
ID=67187006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711397002.9A Active CN110020314B (zh) | 2017-12-21 | 2017-12-21 | Web页面数据处理方法、装置、计算设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110020314B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102123198A (zh) * | 2011-01-11 | 2011-07-13 | 中国联合网络通信集团有限公司 | 媒体播放器的内存管理方法和内存管理器 |
CN105094755A (zh) * | 2014-04-25 | 2015-11-25 | 国际商业机器公司 | 用于呈现web页面中的web元素的方法和装置 |
CN106293878A (zh) * | 2016-08-05 | 2017-01-04 | 北京航空航天大学 | 一种在jvm中动态计算对象重用价值的方法 |
CN107168887A (zh) * | 2017-05-09 | 2017-09-15 | 深圳市茁壮网络股份有限公司 | 一种JavaScript对象存储、回收方法及装置 |
WO2017196760A1 (en) * | 2016-05-13 | 2017-11-16 | Microsoft Technology Licensing, Llc | Dynamically sized locals with precise garbage collection reporting |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8924437B2 (en) * | 2012-03-13 | 2014-12-30 | Microsoft Corporation | Memory usage data collection and analysis for dynamic objects |
US9619913B2 (en) * | 2013-06-03 | 2017-04-11 | Microsoft Technology Licensing, Llc. | Animation editing |
US10942683B2 (en) * | 2015-10-28 | 2021-03-09 | International Business Machines Corporation | Reducing page invalidation broadcasts |
CN107145451B (zh) * | 2017-05-09 | 2020-09-25 | 深圳市茁壮网络股份有限公司 | 一种JavaScript对象存储、回收方法及装置 |
-
2017
- 2017-12-21 CN CN201711397002.9A patent/CN110020314B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102123198A (zh) * | 2011-01-11 | 2011-07-13 | 中国联合网络通信集团有限公司 | 媒体播放器的内存管理方法和内存管理器 |
CN105094755A (zh) * | 2014-04-25 | 2015-11-25 | 国际商业机器公司 | 用于呈现web页面中的web元素的方法和装置 |
WO2017196760A1 (en) * | 2016-05-13 | 2017-11-16 | Microsoft Technology Licensing, Llc | Dynamically sized locals with precise garbage collection reporting |
CN106293878A (zh) * | 2016-08-05 | 2017-01-04 | 北京航空航天大学 | 一种在jvm中动态计算对象重用价值的方法 |
CN107168887A (zh) * | 2017-05-09 | 2017-09-15 | 深圳市茁壮网络股份有限公司 | 一种JavaScript对象存储、回收方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110020314A (zh) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11868785B2 (en) | Application program page processing method and device | |
TW202141300A (zh) | 頁面處理方法、裝置、設備及儲存媒體 | |
CN109388766B (zh) | 页面加载的方法和装置 | |
US10207190B2 (en) | Technologies for native game experience in web rendering engine | |
US9432727B2 (en) | Script-based video rendering | |
CN111339458B (zh) | 页面呈现方法和装置 | |
US9286142B2 (en) | Methods and systems for supporting a rendering API using a runtime environment | |
CN113703893B (zh) | 一种页面渲染方法、装置、终端及存储介质 | |
CN112256990B (zh) | 一种图像处理方法及装置、计算机可读存储介质 | |
CN111737614B (zh) | 页面显示方法、装置、电子设备和存储介质 | |
CN112882694A (zh) | 一种程序编译方法、装置、电子设备及可读存储介质 | |
CN110020314B (zh) | Web页面数据处理方法、装置、计算设备和存储介质 | |
US20110321043A1 (en) | System, Method and Program Product for Native Interface Optimization of Read-Only Arrays | |
CN114327733B (zh) | 开机启动交互界面的动态更新方法、装置、设备及介质 | |
CN114244912B (zh) | 数据传输方法、装置、计算机设备及存储介质 | |
CN114637499A (zh) | 可视化组件处理方法、装置、设备及介质 | |
US20140237133A1 (en) | Page download control method, system and program for ie core browser | |
WO2022199806A1 (en) | Accelerating loading of web pages and web applications | |
CN113961298A (zh) | 一种页面切换方法、装置、设备及介质 | |
CN108376161B (zh) | 显示网页的方法、装置、终端及存储介质 | |
CN113287092A (zh) | 在应用打开操作期间添加数字内容的系统和方法 | |
CN116804915B (zh) | 基于存储器的数据交互方法、处理器、设备以及介质 | |
JP5842029B2 (ja) | 画像データをキャッシュする情報処理支援装置、情報処理装置及び情報処理支援プログラム | |
CN115982486B (zh) | 一种优化内存的方法及装置 | |
TWI846438B (zh) | 前端框架提供方法及其系統 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200709 Address after: 310052 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Alibaba (China) Co.,Ltd. Address before: 510627 Guangdong city of Guangzhou province Whampoa Tianhe District Road No. 163 Xiping Yun Lu Yun Ping B radio square 14 storey tower Applicant before: Guangzhou Dongjing Computer Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |