http请求处理方法及装置与流程

文档序号:15557461发布日期:2018-09-29 01:27阅读:328来源:国知局

本发明涉及互联网技术领域,具体而言,涉及一种http请求处理方法及装置。



背景技术:

互联网时代,由于b/s结构的兴起,浏览器在现如今的互联网时代扮演着越来越重要的角色,但由于早期浏览器并没有一个统一的标准,各个浏览器对编译语言(如javascript以及css等)的兼容性都不相同,但因为开发者需要让不同的用户拥有更友好的体验,由此出现了向下兼容的开发模式,通常会选择为了兼容更多浏览器,而选择了放弃语言提供的一些更新、更快速、更简洁的代码。

因为不能够确定用户的浏览器的版本对于兼容性的处理情况,所以在进行代码编译的时候,会统一对代码进行语法降级处理,这将会导致即使用户浏览器是支持新特性的浏览器,但是使用的依然是低版本语法的代码,不能享受高版本语法带来的便利与优势。同时,这会使得我们的代码量成倍的增长,导致文件体积增大,浪费流量,延长用户的等待时间。



技术实现要素:

有鉴于此,本发明实施例的目的在于提供一种http请求处理方法及装置,以改善上述问题。

本发明是这样实现的:

第一方面,本发明实施例提供了一种http请求处理方法,应用于与服务器通信连接的用户终端,所述方法包括:

获取浏览器对编译语言支持的支持信息;

将所述支持信息添加到所述浏览器对应的http请求的头信息中;

将添加支持信息后的所述http请求发送给所述服务器,以使所述服务器返回与所述支持信息对应版本的代码。

可选地,所述方法还包括:

将所述支持信息进行序列化处理;

所述将所述支持信息添加到所述浏览器对应的http请求的头信息中,包括:

将序列化处理后的所述支持信息添加到所述浏览器对应的http请求的头信息中。

可选地,所述获取浏览器对编译语言支持的支持信息,包括:

调用测试用例对所述浏览器的支持特性进行测试,得到所述浏览器对编译语言支持的支持信息。

可选地,所述方法还包括:

当所述浏览器版本更新时,根据更新后的所述浏览器更新所述支持信息。

可选地,所述方法还包括:

将所述支持信息以清单的形式存储。

第二方面,本发明实施例提供了一种http请求处理装置,应用于与服务器通信连接的用户终端,所述http请求处理装置包括:

获取模块,用于获取浏览器对编译语言支持的支持信息;

添加模块,用于将所述支持信息添加到所述浏览器对应的http请求的头信息中;

发送模块,用于将添加支持信息后的所述http请求发送给所述服务器,以使所述服务器返回与所述支持信息对应版本的代码。

可选地,所述http请求处理装置还包括:

序列化模块,用于将所述支持信息进行序列化处理;

所述添加模块用于将序列化处理后的所述支持信息添加到所述浏览器对应的http请求的头信息中。

可选地,所述获取模块用于调用测试用例对所述浏览器的支持特性进行测试,得到所述浏览器对编译语言支持的支持信息。

可选地,所述http请求处理装置还包括:

更新模块,用于当所述浏览器版本更新时,根据更新后的所述浏览器更新所述支持信息。

可选地,所述http请求处理装置还包括:

存储模块,用于将所述支持信息以清单的形式存储。

对于现有技术,本发明提供的http请求处理方法及装置具有如下的有益效果:

本发明提供的http请求处理方法及装置在向服务器发送http请求时,将浏览器对编译语言支持的支持信息添加到http请求的头信息中,如此服务器在接收到http请求后能够根据浏览器对编译语言的支持情况返回对应版本的代码,而不是最低版本的代码,代码的运行速度会更快。同时,由于不需要将代码大量的从新版本转换成老版本,能够节省大量的代码,大量减小文件体积。另外,由于现在浏览器版本的碎片化,对编译语言支持的情况也是服务器所不能把握的,通过提前检测浏览器对编译语言支持的情况,能够避免有浏览器不支持的代码返回给客户端。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明较佳实施例提供的服务器与用户终端进行交互的示意图。

图2为本发明较佳实施例提供的一种用户终端的方框示意图。

图3为本发明较佳实施例提供的http请求处理方法的流程图。

图4为本发明较佳实施例提供的http请求处理装置的功能模块示意图。

图标:100-用户终端;110-http请求处理装置;111-获取模块;112-添加模块;113-发送模块;114-序列化模块;115-更新模块;116-存储模块;120-存储器;130-存储控制器;140-处理器;150-外设接口;160-输入输出单元;170-音频单元;180-显示单元;200-服务器;300-网络;400-应用程序。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

如图1所示,是本发明较佳实施例提供的服务器200与用户终端100进行交互的示意图。所述服务器200通过网络300与一个或多个用户终端100进行通信连接,以进行数据通信或交互。所述服务器200可以提供至少一个适用于各种操作系统的应用程序(application,app)400的安装包供所述用户终端100下载。所述用户终端100通过所述网络300访问所述服务器200后,可通过所述网络300从所述服务器200下载适用于该用户终端100的操作系统的应用程序400的安装包,以将所述应用程序400安装到所述用户终端100中。

本实施例中,所述服务器200可以是,但不限于网络服务器、数据库服务器等。所述用户终端100可以是,但不限于个人电脑(personalcomputer,pc)、平板电脑、智能手机、个人数字助理(personaldigitalassistant,pda)、代理服务器等。所述网络300可以是,但不限于有线网络或无线网络。所述用户终端100的操作系统可以是,但不限于安卓(android)系统、ios(iphoneoperatingsystem)系统、windowsphone系统、windows系统等。所述应用程序400可以是所述服务器200提供的任何可供用户终端100自定义下载并安装的应用程序。

如图2所示,是本发明较佳实施例提供的一种用户终端100的方框示意图。所述用户终端100包括http请求处理装置110、存储器120、存储控制器130、处理器140、外设接口150、输入输出单元160、音频单元170、显示单元180。

所述存储器120、存储控制器130、处理器140、外设接口150、输入输出单元160、音频单元170、显示单元180各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述http请求处理装置110包括至少一个可以软件或固件(firmware)的形式存储于所述存储器120中或固化在所述用户终端100设备的操作系统(operatingsystem,os)中的软件功能模块。所述处理器140用于执行存储器120中存储的可执行模块,例如所述http请求处理装置110包括的软件功能模块或计算机程序。

其中,存储器120可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器120用于存储程序,所述处理器140在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的用户终端100所执行的方法可以应用于处理器140中,或者由处理器140实现。

处理器140可能是一种集成电路芯片,具有信号的处理能力。上述的处理器140可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述外设接口150将各种输入/输入装置耦合至处理器140以及存储器120。在一些实施例中,外设接口150,处理器140以及存储控制器130可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。

输入输出单元160用于提供给用户输入数据实现用户与所述http请求处理装置110的交互。所述输入输出单元160可以是,但不限于,鼠标和键盘等。

音频单元170向用户提供音频接口,其可包括一个或多个麦克风、一个或者多个扬声器以及音频电路。

显示单元180在所述http请求处理装置110与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示单元180可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器140进行计算和处理。

请参阅图3,是本发明较佳实施例提供的应用于图2所示的http请求处理装置110的http请求处理方法的流程图。下面将对图3所示的具体流程进行详细阐述。

步骤s101,获取浏览器对编译语言支持的支持信息。

本发明实施提供的http请求处理方法可用于对用户终端100向服务器200发送的http请求进行处理,或其他与用户终端100通信的终端设备通过用户终端100向服务器200发送的http请求进行处理(即用户终端100作为其他终端设备的代理设备,对其他终端设备的浏览器发送的http请求进行处理)。

不同版本的浏览器对于编译语言(如js、css、html等)的支持情况不同。因此,在向服务器200发送的http请求之前(或请求时),用户终端100获取其当前所使用版本的浏览器对编译语言支持的支持信息,或者获取与之通信连接的终端设备当前所使用版本的浏览器对编译语言支持的支持信息(当其他与用户终端100通信的终端设备通过用户终端100向服务器200发送的http请求进行处理时)。所述支持信息用于表征浏览器对编译语言的支持特性。

具体的,用户终端100的应用程序400中预先设置有多个用于检测浏览器对编译语言的支持特性的测试用例。在获取浏览器对编译语言支持的支持信息时,用户终端100加载该应用程序400,并调用该应用程序400中的测试用例,对当前所使用浏览器对编译语言的支持特性进行测试,根据测试各个测试用例的输出结果,得到当前所使用浏览器对于编译语言的各项支持特性,即得到当前所使用浏览器对于编译语言支持的支持信息。

本发明实施例中,所述应用程序400可以采用,但不限于扩展程序、插件等方式。

进一步的,在获得当前所使用浏览器对于编译语言支持的支持信息后,用户终端100还可以将该支持信息以清单的形式进行存储。

步骤s102,将支持信息进行序列化处理。

得到当前所使用浏览器对于编译语言支持的支持信息后,用户终端100将该支持信息进行序列化处理,以将该支持信息转化成http请求头支持格式的字符串,以便该支持信息能够添加到http请求的头信息中。

步骤s103,将序列化处理后的支持信息添加到浏览器对应的http请求的头信息中。

将支持信息进行序列化处理,得到http请求头支持格式的字符串后,用户终端100将序列化处理后的支持信息添加到通过浏览器向服务器200发送的http请求的头信息中。

步骤s104,将添加支持信息后的http请求发送给服务器,以使服务器返回与支持信息对应版本的代码。

将序列化处理后的支持信息添加到通过浏览器向服务器200发送的http请求的头信息中后,用户终端100将添加该支持信息后的http请求发送给服务器200。

http请求的头信息中包含了表征当前所使用浏览器对于编译语言支持特性的支持信息,因此服务器200在获得该http请求后,能够根据http请求的头信息中的支持信息获知当前版本浏览器对编译语言的支持特性,从而向用户终端返回符合该支持特性的高版本代码,而不是将代码转换成最低版本后再返回给用户终端100,因此代码在用户终端100的运行速度会更快,降低用户的等待时间,同时,由于不需要将代码大量的从新版本转换成老版本,能够节省大量的代码,大量减小文件体积,降低用户流量消耗。另外,由于现在浏览器版本的碎片化,对编译语言支持的情况也是服务器所不能把握的,通过提前检测浏览器对编译语言支持的情况,能够避免有浏览器不支持的代码返回给客户端。

步骤s105,当浏览器版本更新时,根据更新后的浏览器更新支持信息。

在使用浏览器的过程中,用户终端100的用户可能会对浏览器的版本进行更新,版本更新后的浏览器能够支持更高版本的代码,为进一步提高代码运行速度,节省代码量,减小文件体积。本发明实施例提供的方法中,用户终端100的应用程序400还会对浏览器的版本进行监测,并当监测到浏览器的版本更新时,重新执行上述步骤s101的流程以根据更新后的浏览器更新支持信息,以便后续向服务器200发送http请求时,服务器200能够及时返回符合当前版本浏览器所支持的高版本代码。

综上所述,本发明提供的http请求处理方法在向服务器发送http请求时,将浏览器对编译语言支持的支持信息转换成http请求头支持的格式后添加到http请求的头信息中,如此服务器在接收到http请求后能够根据浏览器对编译语言的支持情况返回对应版本的代码,而不是最低版本的代码,代码的运行速度会更快,降低用户的等待时间。同时,由于不需要将代码大量的从新版本转换成老版本,能够节省大量的代码,大量减小文件体积,降低用户流量消耗。其次,由于现在浏览器版本的碎片化,对编译语言支持的情况也是服务器所不能把握的,通过提前检测浏览器对编译语言支持的情况,能够避免有浏览器不支持的代码返回给客户端。另外,当浏览器版本更新时,可根据更新后的浏览器更新支持信息,以便在向服务器200发送http请求时,服务器200能够及时返回符合当前版本浏览器所支持的高版本代码,进一步提高代码运行速度,节省代码量,减小文件体积。

请参阅图4,是本发明较佳实施例提供的图2所示的http请求处理装置110的功能模块示意图。所述http请求处理装置110包括获取模块111、添加模块112、发送模块113、序列化模块114、更新模块115和存储模块115。

所述获取模块111用于获取浏览器对编译语言支持的支持信息。

不同版本的浏览器对于编译语言(如js、css、html等)的版本的支持情况不同。在向服务器200发送的http请求之前(或请求时),用户终端100通过所述获取模块111获取其当前所使用版本的浏览器对编译语言(版本)支持的支持信息,或者获取与之通信连接的终端设备当前所使用版本的浏览器对编译语言支持的支持信息。

可以理解的,所述获取模块111可以用于执行上述的步骤s101。

所述存储模块115用于将所述支持信息以清单的形式存储。

在获得当前所使用浏览器对于编译语言支持的支持信息后,用户终端100通过所述存储模块115将该支持信息以清单的形式进行存储。

所述序列化模块114用于将所述支持信息进行序列化处理。

得到当前所使用浏览器对于编译语言支持的支持信息后,用户终端100通过所述序列化模块114将该支持信息进行序列化处理,以将该支持信息转化成http请求头支持格式的字符串。

可以理解的,所述序列化模块114可以用于执行上述的步骤s102。

所述添加模块112用于将序列化处理后的所述支持信息添加到所述浏览器对应的http请求的头信息中。

将支持信息进行序列化处理,得到http请求头支持格式的字符串后,用户终端100通过所述添加模块112将序列化处理后的支持信息添加到通过浏览器向服务器200发送的http请求的头信息中。

可以理解的,所述添加模块112可以用于执行上述的步骤s103。

所述发送模块113用于将添加支持信息后的所述http请求发送给所述服务器,以使所述服务器返回与所述支持信息对应版本的代码。

将序列化处理后的支持信息添加到通过浏览器向服务器200发送的http请求的头信息中后,用户终端100通过所述发送模块113将添加该支持信息后的http请求发送给服务器200。

可以理解的,所述发送模块113可以用于执行上述的步骤s104。

所述更新模块115用于当所述浏览器版本更新时,根据更新后的所述浏览器更新所述支持信息。

用户终端100的应用程序400还会对浏览器的版本进行监测,并当监测到浏览器的版本更新时,通过所述更新模块115根据更新后的浏览器更新支持信息。

可以理解的,所述更新模块115可以用于执行上述的步骤s105。

综上所述,本发明提供的http请求处理装置110能够在向服务器发送http请求时,将浏览器对编译语言支持的支持信息转换成http请求头支持的格式后添加到http请求的头信息中,如此服务器在接收到http请求后能够根据浏览器对编译语言的支持情况返回对应版本的代码,而不是最低版本的代码,代码的运行速度会更快,降低用户的等待时间。同时,由于不需要将代码大量的从新版本转换成老版本,能够节省大量的代码,大量减小文件体积,降低用户流量消耗。其次,由于现在浏览器版本的碎片化,对编译语言支持的情况也是服务器所不能把握的,通过提前检测浏览器对编译语言支持的情况,能够避免有浏览器不支持的代码返回给客户端。另外,当浏览器版本更新时,可根据更新后的浏览器更新支持信息,以便在向服务器200发送http请求时,服务器200能够及时返回符合当前版本浏览器所支持的高版本代码,进一步提高代码运行速度,节省代码量,减小文件体积。

本发明实施例还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的http请求处理方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1