重排服务器响应的制作方法
【专利摘要】本发明涉及重排服务器响应。提供了一种用于响应于客户端浏览器的请求(REQ)而重排服务器响应(RESP)的方法和系统,其中,客户端请求(REQ)请求获得给定网页,并且其中,相关的服务器响应(RESP)包括具有内部代码部分形式和外部代码部分形式的客户端指令的页面标记代码(PMC),外部代码部分位于文件内,所述文件的链接在页面标记代码(PMC)内,本发明包括:a)处理页面标记代码(PMC)以获得重排的页面标记代码(R—PMC),使得代码部分中的至少一些根据优化准则以统一的方式进行分组;以及b)响应于客户端请求(REQ)而提供待发送至客户端(CL)的重排的服务器响应(R—RESP),重排的服务器响应(R—RESP)包括利用前述项的处理获得的重排的页面标记代码(R—PMC)。
【专利说明】重排服务器响应
【技术领域】
[0001] 本发明涉及用于响应于客户端浏览器的请求而重排服务器响应的方法和系统。
【背景技术】
[0002] 如今的软件应用日益以网络应用的形式进行编写,即软件应用以浏览器支持的编 程语言进行编码,并且依赖于通用网络浏览器使应用程序可执行。由于网络浏览器的普及 以及使用网络浏览器作为客户端的便利性,网络应用很受欢迎。遗憾的是,如今的网络应用 和网站通常遭受性能问题,这主要是由于带宽使用、客户端和服务器之间的数据交换时间、 网页加载时间、网页呈现持续时间等的较差优化。
[0003] 如今的网络应用和网站的另一典型技术问题是开发工具和开发人员通常不检查 客户端浏览器限制。公知的浏览器限制包括:包括每页的CSS的最大数目;以及脚本资源的 最大长度等。
[0004] 许多软件开发人员使用服务器侧技术如Microsoft. NET来设计复杂网络应用,该 服务器侧技术是使软件开发人员能够使用可视化工具、预构建控件、主题等来编写复杂网 络应用的优异框架。
[0005] 然而,这样的项目组件的高层视觉不允许软件开发人员获知如何在客户端侧呈现 所有的服务器侧逻辑。这是复杂网络应用和网站通常经受低水平性能的原因。
[0006] 此外,有时也可能存在其他性能问题,这些问题在最坏的情况下可能变为阻碍问 题并且可能证实难以被检测到,比如像由浏览器管理的CSS的最大数目、视图状态客户端 控件的大小、直接写入页面的网页Java脚本和CSS代码,以及这些脚本在代码中的位置;事 实上,例如,由于浏览器网络线程的限制,处于页面的不适当位置处的Java脚本代码可能 导致客户端性能的降低。
[0007] 因此,如今客户在全世界内开放大量服务咨询,以报告同样由上述一些较差性能 水平引起的网络应用和网站的若干可用性问题。对于这些客户中的多数客户,软件系统的 性能程度是选择软件供应商和推进软件供应商应对未来挑战的能力的关键问题。
[0008] 在网络应用和网站中,继客户端和服务器之间的握手过程之后,网页通过客户端 屏幕上的浏览器呈现为视觉实体,其中该握手过程包括从客户端到服务器的请求序列和从 服务器到客户端的响应序列。
[0009] 图1是示意性示出根据现有技术的、由客户端浏览器请求网页和服务器响应的示 例的框图。
[0010] 假设在客户端CL处的浏览器向服务器SRV制定请求REQ以获得具有给定URL的 网页。
[0011] 服务器以响应RESP的方式对客户端作出响应,该响应RESP是包含以HTML语言编 写的页面标记代码PMC的数据流,该页面标记代码PMC包括待由客户端执行的指令序列。
[0012] 如本领域的技术人员所知,网页标记代码PMC通常还可以包括以下中的一个或多 个:
[0013] -存在于页面标记代码PMC中的一组CSS代码部分;
[0014] -存在于页面标记代码PMC中的一组脚本;
[0015] -至外部CSS文件的一组链接;以及 [0016]-至外部脚本文件的一组链接。
[0017] 还要注意,如本领域的技术人员所知,至外部文件(即CSS文件或脚本文件)的 链接可以涉及静态文件或动态文件。动态文件是在运行时构建的,并且其内容中的一些内 容根据客户端请求进行改变;相反,静态文件被存储在文件系统中,并且其内容通常不会改 变。取决于相关的服务器处理,动态资源通常针对每个新客户端请求而改变,并且客户端通 常不"先验地"清楚外部链接是涉及动态文件类型还是替代地涉及静态文件类型。相反,月艮 务器通常能够获知外部文件是动态类型还是静态类型。通常通过多种公知的适宜方式比如 像文件名或文件url句法,或者通过验证文件是否存在于给出其url的文件系统内,文件是 动态类型还是静态类型的知识被提供至服务器。
[0018] 因此,如图1所示,至客户端CL的服务器响应RESP是以html语言HTML编写的页 面标记代码PMC形式,该页面标记代码PMC包括头部HEAD和本体(未示出),并且还可以包 括以下中的一个或多个:
[0019] -样式资源链接STRL :至CSS文件的链接;
[0020]-脚本资源链接SCRL :至脚本文件的链接;
[0021] -页面脚本代码PSCC :存在于页面标记代码PMC中的脚本部分;
[0022] -页面样式代码PSTC :存在于页面标记代码PMC中的CSS部分;以及
[0023] -其他网络资源链接0WRL :至(不同于CSS和脚本文件的)任何其他通用网络资 源,例如图像、视频、音乐文件、Excel文件、Word文件等的链接。
[0024] 要注意,页面样式代码或页面脚本代码均是存在于标记代码PMC中的代码部分, 其可以在运行之前就存在或在运行时由服务器侧进程插入。
[0025] 根据网页握手过程,具有在客户端/服务器通信交换中所需的三个主要步骤:
[0026] 步骤1)客户端CL向服务器SRV发送请求REQ,例如打开具有给定URL的网页;
[0027] 步骤2)服务器SRV生成响应RESP,该响应RESP包括页面标记代码PMC形式的客 户端指令,以用于执行步骤1)的请求REQ ;以及
[0028] 步骤3)客户端CL分析在步骤2)中所接收的响应RESP并执行所包括的指令,其 中,该指令具有向服务器SRV请求要从服务器下载的所有必需资源的请求序列,并且对它 们进行处理以使所请求呈现的网页内容可视化。要下载的这种必需资源可以包括图像、声 音、CSS样式、脚本以及其他。
[0029] 如本领域的技术人员所知,在步骤3),终端用户通常遭受到性能问题,例如页面呈 现缓慢、长时间等待和页面死机。
[0030] 本发明意在解决的性能问题通常归因于:网络和浏览器限制;以及服务器响应 RESP的页面标记代码PMC通常不是以用于减少网络使用和其限制副作用的优化方式进行 编写的。
[0031] 用于处理上述性能问题的公知方法包括在服务器侧和客户端侧进行调查,例如通 过调查硬件、资源消耗、日志、数据存储以及数据处理时间等。遗憾的是,在考虑到客户端请 求的情况下,这种方法经受服务器响应未被优化的缺点。这可能意味着:由于大量网络资源 (脚本、CSS样式、图像、声音、Word和Excel文档等)的下载时间并且由于资源的呈现时间 等,所以要由浏览器处理的客户端侧生成代码的量非常大。
[0032] 用于处理上述性能问题的其他方法包括在两侧(即客户端侧和服务器侧)上对网 络应用进行重新设计。遗憾的是,这样的方法经受以下缺点:由于第三方组件是非开放源 码,所以所有所需的源代码有时不可用;需要高的软件技能;需要大量时间精力;以及涉及 维护工作和高成本。
[0033] 用于处理上述性能问题的其他方法包括改进硬件。遗憾的是,这样的方法经受以 下缺点:中到高的成本;应用必须是可扩展的;以及可能不足以获得良好性能。
[0034] 用于处理上述性能问题的其他方法使用代理缓存系统。遗憾的是,这样的方法由 于对流量进行缓存的存储系统而经受使数据一致性面临风险的缺点。此外,代理系统通常 是在网络服务器和客户端中间的独立外部系统,因此代理系统需要是相当快速的系统,以 避免在请求和响应之间引入延迟,因而需要高的硬件成本和非常快速的网络。
【发明内容】
[0035] 因此,本发明的目的在于通过以下方式来克服上述缺点:提供用于响应于客户端 浏览器的请求而重排服务器响应RESP的方法和系统,使得客户端的执行被优化,从而使上 述性能问题最小化。
[0036] 上述目的是通过用于响应于客户端浏览器的请求而重排服务器响应的方法和系 统来实现的,其中,客户端请求进行请求以获得给定网页,并且其中,相关的服务器响应包 括具有内部代码部分形式和外部代码部分形式的客户端指令的页面标记代码,该外部代码 部分位于文件内,并且所述文件的链接在页面标记代码内,本发明包括 :
[0037] a)处理页面标记代码以获得重排的页面标记代码,使得代码部分中的至少一些根 据优化准则以统一的方式进行分组;以及
[0038] b)响应于客户端请求来提供待发送至客户端CL的重排的服务器响应,所述重排 的服务器响应包括利用前述步骤的处理所获得的重排的页面标记代码。
[0039] 在本发明的实施方式中,外部代码部分可以包括脚本文件中包括的外部脚本部 分,并且其中,项a)可以包括以下子项:
[0040] a21)将脚本文件的所有内容合并到一个脚本元文件中;
[0041] a22)在重排的页面标记代码中,优选在其底部,将脚本元文件链接;以及
[0042] a23)从重排的页面标记代码中移除至外部脚本文件的所有链接。
[0043] 在本发明的实施方式中,外部代码部分可以包括CSS文件中包括的外部CSS部分, 并且其中,项a)可以包括以下子项:
[0044] a31)将CSS文件的所有内容合并到一个CSS元文件中;
[0045] a32)在重排的页面标记代码的头部中,将CSS元文件链接;以及
[0046] a33)从重排的页面标记代码中移除至外部CSS文件的所有链接。
[0047] 在本发明的实施方式中,内部代码部分可以包括内部脚本部分,其中,子项a21) 还可以包括将所有内部脚本部分合并到脚本元文件;并且其中,子项a23)还可以包括从重 排的页面标记代码中移除所有的内部脚本部分。
[0048] 在本发明的实施方式中,内部代码部分可以包括内部脚本部分,并且其中,项a) 可以包括以下子项:
[0049] a51)将所有的内部脚本部分合并到一个脚本元文件;
[0050] a52)在重排的页面标记代码中,优选在其底部,将脚本元文件链接;以及
[0051] a53)从重排的页面标记代码中移除所有的内部脚本部分。
[0052] 在本发明的实施方式中,内部代码部分可以包括内部CSS部分,其中,子项a31)还 可以包括将所有的内部CSS部分合并到CSS元文件中;并且其中,子项a33)还可以包括从 重排的页面标记代码中移除所有的内部CSS部分。
[0053] 在本发明的实施方式中,内部代码部分可以包括内部CSS部分,并且其中,项a)可 以包括以下子项:
[0054] a71)将所有的内部CSS部分合并到一个CSS元文件;
[0055] a72)在重排的页面标记代码的头部,将CSS元文件链接;以及
[0056] a73)从重排的页面标记代码中移除所有的内部CSS部分。
[0057] 在本发明的实施方式中,优选地,可以通过如下方式单独处理动态文件和静态文 件:创建动态元文件和静态元文件;将动态文件的内容合并到相应的动态元文件中;并且 优选将缓存报头添加至静态元文件(即具有非动态内容的元文件),以使客户端在给定间 隔时间内对该静态元文件进行缓存,这可以方便地进行参数化。
[0058] 在本发明的实施方式中,元文件中的至少一个可以被赋予全局可见性。
[0059] 在本发明的实施方式中,元文件中的至少一个和重排的页面标记代码可以有利地 进行缩小和/或压缩。
[0060] 此外,可以提供包括计算机程序代码的计算机程序单元,该计算机程序代码在被 加载到计算设备的数字处理器中时,用于执行根据上述方法的步骤。
[0061] 另外,可以提供存储在计算机可用介质上的计算机程序产品,该计算机程序产品 包括用于使计算设备执行上述方法的计算机可读程序代码。
[0062] 利用本发明的实施方式,通过控制在服务器侧生成的响应,便利地实现了在客户 端侧的控制。实际上,通过本发明的实施方式,在服务器侧的处理使得客户端代码的功能逻 辑优化。
[0063] 利用本发明的实施方式,优化了网络应用的性能。
[0064] 通过减少所需的带宽使用、通过减少客户端和服务器之间数据交换量以及通过在 客户端侧需要较少的细化时间,本发明的实施方式使得客户端侧执行性能改善。
[0065] 本发明的实施方式通过优化由服务器侧处理产生的源代码而使得能够加快整个 网页的生命周期。性能优化不仅对客户端侧的网络连接的性能具有积极影响,而且对服务 器侧的处理速度具有积极影响。实际上,本发明的实施方式允许对从客户端到达服务器,以 及作为第二步,从服务器到客户端的请求的管理进行改进。
[0066] 本发明的实施方式允许进行全面优化。
[0067] 本发明的实施方式在不需要通过系统集成商或软件开发商对代码进行重新设计 的情况下实现了性能收益。因为不需要代码的重新设计并且还由于维护过程中所需的较少 努力,在成本降低方面获得了明显技术优势。此外,保留了源代码的知识产权。
[0068] 本发明的实施方式允许透明集成,这是因为服务器响应的重排是在服务器处理结 束时且在上传到客户端之前执行的。
[0069] 本发明的实施方式允许与预先存在的应用快速集成。例如,在制造执行系统的 领域中,本发明的实施方式可以以简单的方式与基于由西门子公司开发的html的其他 Simatic-IT网站和网络应用集成。
[0070] 本发明的实施方式允许避免潜在的性能问题,所述问题可能是先验未知的,或者 可能在规划时未被开发人员考虑到,或者可能是不可由开发人员的源代码直接管理的。
[0071] 通过本发明的实施方式进行的服务器响应重排能够获得以下结果:
[0072] -具有清洁的源代码的重排的页面标记代码;
[0073]-最小数量的CSS资源和脚本资源;以及
[0074] -通过缩小和/或压缩引起的内容减少。
[0075] 本发明的实施方式能够获得被称为静态CSS元文件的仅一个静态CSS文件,该静 态CSS元文件将所有静态CSS文件的内容集合在一起,并且具有以下优点 :
[0076] -具有仅一个静态CSS文件减少了客户端浏览器需要打开以下载静态CSS资源的 连接的数目,在客户端缓存期满之前只执行一次下载;
[0077] -可以有利地插入缓存报头以使客户端对这样的静态CSS元文件进行缓存,以节 省带宽并且减少客户端和服务器之间所交换数据的量;以及
[0078] -在重排的页面标记代码的头部中,这种静态CSS元文件可以方便地链接,以减 少客户端细化时间。
[0079] 本发明的实施方式能够获得被称为动态CSS元文件的仅一个动态CSS文件,该动 态CSS元文件将所有动态CSS文件的内容集合在一起,并且具有以下优点 :
[0080] -具有仅一个动态CSS文件减少了客户端浏览器需要打开以下载动态CSS资源的 连接的数目;以及
[0081] -在重排的页面标记代码的头部中,这种动态CSS元文件可以方便地链接,以减 少客户端细化时间。
[0082] 本发明的实施方式能够获得被称为静态脚本元文件的仅一个静态脚本文件,该静 态脚本元文件将所有静态脚本文件的内容集合在一起,并且具有以下优点 :
[0083] -具有仅一个静态脚本文件减少了客户端浏览器需要打开以下载静态脚本资源 的连接的数目,在客户端缓存期满之前只执行一次下载;
[0084]-可以有利地插入缓存报头以使客户端对这样的静态脚本元文件进行缓存,以节 省带宽并且减少客户端和服务器之间所交换数据的量;以及
[0085]-在重排的页面标记代码中,优选在其底部,这种静态脚本元文件可以方便地链 接,以减少客户端细化时间。
[0086] 本发明的实施方式能够获得被称为动态脚本元文件的仅一个动态脚本文件,该动 态脚本元文件将所有动态脚本文件的内容集合在一起,并且具有以下优点 :
[0087] -具有仅一个动态脚本文件减少了客户端浏览器需要打开以下载动态脚本资源 的连接的数目;以及
[0088]-在重排的页面标记代码中,优选在其底部,这种动态脚本元文件可以链接,以减 少客户端细化时间。
[0089] 要注意,在重排的页面标记代码的底部将静态/动态脚本元文件链接是可选的, 这是因为可能存在不推荐将脚本链接定位在底部的一些情况或浏览器类型。
[0090] 本发明的实施方式能够从重排的页面标记代码中移除CSS/脚本内容,并且将该 CSS/脚本内容置于静态CSS/脚本元文件中,并且具有以下优点:
[0091] -节省带宽并且减少客户端和服务器之间所交换数据的量;以及
[0092] -减少客户端细化时间。
【专利附图】
【附图说明】
[0093] 现在将参照附图以优选但非排他性实施方式来描述本发明,在附图中:
[0094] 图1是示意性示出根据现有技术(之前已描述)的、由客户端浏览器请求的网页 和服务器响应的示例的框图;以及
[0095] 图2是示意性示出根据本发明的示例性实施方式的、由客户端浏览器请求的网页 和服务器响应的示例的框图。
【具体实施方式】
[0096] 本发明的至少一些实施方式解决了上述问题,在这些实施方式中,将响应于客户 端浏览器的请求REQ而生成的服务器响应RESP重排成重排的服务器响应R_RESP。客户端 请求REQ请求获得给定网页,并且相关生成的服务器响应RESP包括具有内部代码部分形式 和外部代码部分形式的客户端指令的页面标记代码PMC,该外部代码部分位于链接位于页 面标记代码PMC内的文件中。
[0097] 根据本发明的服务器响应RESP的重排包括以下步骤:
[0098] -处理页面标记代码PMC以获得重排的页面标记代码R_PMC,使得代码部分中的 至少一些根据优化准则以统一的方式进行分组,不同类型的代码部分中的一些可以例如包 括内部或外部代码部分、脚本或CSS样式以及动态或静态文件,在本发明的实施方式中,代 码部分可以根据它们的类型进行分组;以及
[0099] -响应于客户端请求REQ而提供待发送至客户端CL的重排的服务器响应R_ RESP,该重排的服务器响应R_RESP包括重排的页面标记代码R_PMC。
[0100] 页面标记代码PMC包括要在客户端侧执行的指令,以用于示出给定网页。这种指 令可以是内部代码部分和外部代码部分的形式。
[0101] 外部代码部分位于在页面标记代码PMC内链接的(外部)文件中。这样的文件可 以是脚本文件或CSS文件。另外,这样的脚本和CSS文件可以是静态或动态的。
[0102] 相反,内部代码部分存在于页面标记代码PMC内。
[0103] 结果,页面标记代码PMC包括以下中的一个或多个:
[0104] -至静态CSS文件的一组链接STRL ;
[0105] -至动态CSS文件的一组链接STRL ;
[0106] -至静态脚本文件的一组链接SCRL ;
[0107] -至动态脚本文件的一组链接SCRL ;
[0108] -一组CSS代码部分PSTC ;以及
[0109] -一组脚本代码部分PSCC。
[0110] 脚本内容的重棑
[0111] 在本发明的至少一些实施方式中,在页面标记代码PMC包括至脚本文件(其非空) 的一组链接SCRL的情况下,将服务器响应RESP重排成重排的服务器响应R_RESP还可以包 括以下步骤:
[0112] -将脚本文件的所有内容合并到一个脚本元文件中;
[0113] -在重排的页面标记代码R_PMC中,优选在其底部,将脚本元文件链接;以及
[0114] -从重排的页面标记代码R_PMC移除至脚本文件的所有链接。
[0115] 另外,可以对静态和动态脚本文件进行不同处置,使得静态脚本文件的所有内容 被合并到静态脚本元文件中,并且动态脚本文件的所有内容被合并到动态脚本元文件中。 由于这样的划分,可以方便地将缓存报头添加至静态脚本元文件,以使客户端在预定义时 间内对该静态脚本元文件进行缓存。
[0116] 另外,在存在于页面标记代码内的一组脚本PSCC为非空的情况下,将服务器响应 RESP重排成重排的服务器响应R_RESP还可以包括以下步骤:
[0117] -将脚本组的所有内容合并到(如果存在区别,则为静态)脚本元文件;以及
[0118] -从重排的页面标记代码R_PMC中移除所有脚本。
[0119] CSS内容的重棑
[0120] 在本发明的至少一些实施方式中,在页面标记代码PMC包括至CSS文件(其为非 空)的一组链接STRL的情况下,将服务器响应RESP重排为重排的服务器响应R_RESP还可 以包括以下步骤:
[0121] -将CSS文件的所有内容合并到一个CSS元文件中;
[0122] -在重排的页面标记代码R_PMC的头部中,将CSS元文件链接;以及
[0123] -从重排的页面标记代HR_PMC中移除至CSS文件的所有链接。
[0124] 另外,可以对静态和动态CSS文件进行不同处置,使得静态CSS文件的所有内容被 合并到静态CSS元文件中,并且动态CSS文件的所有内容被合并到动态CSS元文件中。由 于这样的划分,可以方便地将缓存报头添加至静态CSS元文件,以使客户端在预定义时间 内对该静态CSS元文件进行缓存。
[0125] 另外,在存在于页面标记代码内的一组CSS代码部分PSTC为非空的情况下,将服 务器响应RESP重排成重排的服务器响应R_RESP还可以包括以下步骤:
[0126] -将CSS代码部分组的所有内容合并到(如果存在区别,则为静态)CSS元文件; 以及
[0127] -从重排的页面标记代码R_PMC中移除所有的CSS代码部分。
[0128] 总之,在根据本发明的实施方式的重排的服务器响应R_RESP中,可以执行以下优 化中的一个或多个:
[0129] I .可以将所有静态脚本文件的内容合并到具有缓存报头的一个静态脚本元文 件中(以使客户端在预定义时间内对静态脚本元文件进行缓存);在重排的页面标记代码 R_PMC中,优选在其底部,链接这样的静态脚本元文件;从重排的页面标记代码R_PMC中移 除至所有静态脚本文件的所有链接;
[0130] II .可以将存在于页面标记代码PMC中的所有脚本部分合并到静态脚本元文件, 并且从重排的页面标记代码R_PMC中移除所有这样的脚本部分;
[0131] III.将所有动态脚本文件的内容合并到不具有缓存报头的一个动态脚本元文件 中;在重排的页面标记代码R_PMC中,优选在其底部,链接这样的动态脚本元文件;从重排 的页面标记代码R_PMC中移除至所有动态脚本文件的所有链接;
[0132] IV.可以将所有静态CSS文件的内容合并到具有缓存报头的一个静态CSS元文件 中(以使客户端在预定义时间内对静态CSS元文件进行缓存);在重排的页面标记代码1?_ PMC的头部中,链接这样的静态CSS元文件,并且从重排的页面标记代码R_PMC中移除至所 有静态CSS文件的所有链接;
[0133] V .可以将存在于页面标记代码PMC中的所有CSS代码部分合并到静态CSS元文 件,并且从重排的页面标记代码R_PMC中移除所有这样的CSS代码部分;以及
[0134] VI.将所有动态CSS文件的内容合并到不具有缓存报头的一个动态CSS元文件 中;在重排的页面标记代码R_PMC的头部中,链接这样的动态CSS元文件,并且从重排的页 面标记代码R_PMC中移除至所有动态CSS文件的所有链接。
[0135] 在本发明的至少一些实施方式中,向元文件中的至少一个给予全局可见性,使得 该元文件成为全局元文件。具有全局元文件特别有利,原因在于:在另一浏览器向服务器发 出请求,且该请求与先前浏览器向该服务器发出的请求中的任一个相同的情况下,全局元 文件可以重复使用而无需由服务器重新生成,具有通过节省CPU时间而带来的显著性能改 善。在其他实施方式中,浏览器可以发出与先前请求"类似"的请求,其中,所请求资源中的 仅一些与来自其他服务器的先前请求相同,在这种情况下,全局元文件中的仅一些可以方 便地重复使用。
[0136] 为了快速访问全局元文件,这样的文件可以在给定间隔时间内在服务器存储器中 进行缓存,这可以进行参数化。
[0137] 在本发明的实施方式中,至少一个脚本和/或CSS元文件可以有利地缩小和/或 压缩。而且,清洁的html代码也可以被缩小和/或压缩。
[0138] 压缩和缩小是本领域的技术人员已知的性能优化。从维基百科获得的关于观点 (voice) "缩小"的以下摘录提供了一些简要说明:
[0139] -缩小(也为最简化或最小化)在计算机程序设计语言并且尤其是在 JavaScript中是从源代码移除所有不必要的字符而不改变其功能的过程。这些不必要的字 符通常包括空白字符、换行字符、注释、有时为块分隔符,其均用于增加代码的可读性而不 需要被执行;
[0140] -经缩小的源代码对于HTML代码也非常有用。作为示例,在HTML中的连续空白字 符被呈现为单个空格,所以用单个空格来替换所有的空白序列可以显著减少页面的大小;
[0141] -缩小区别于数据压缩较通用概念在于经缩小的源可以立即被翻译而不需解压 步骤:同样的翻译器可以与原始代码和经缩小的源两者工作;以及
[0142] -可以缩小JavaScript和CSS资源,保持其行为同时显著减小其文件大小。
[0143] 脚本元文件的缩小的示例可以包括:
[0144] -移除不必要的空格、换行符;
[0145] -移除注释;
[0146] -移除不必要的分号;
[0147] -从包括仅一个语句的代码块中移除花括号;
[0148] -用较短的名称对局部变量和函数重命名;
[0149] -将多个独立变量声明组合成一个语句;
[0150] -从不带参数的"If"构造函数中移除空括号;以及
[0151] -将数组构造函数转换为数组常量。
[0152] CSS元文件的缩小的示例可以包括:
[0153] -移除注释;
[0154] -移除所有额外的缩进、空格和换行符;
[0155] -移除闭括号之前的最后分号;以及
[0156] -移除空样式块。
[0157] 虽然以上概念在本领域是已知的,但技术人员肯定理解具有对利用本发明的重排 处理所获得的元文件或经清理源代码执行这种优化的可能性所带来的巨大技术优势。在元 文件为由若干客户端浏览器使用的全局文件的情况下,这样的优势甚至更加显著。
[0158] 图2是示意性示出根据本发明的示例性实施方式的、由客户端浏览器请求网页和 服务器响应的示例的框图。
[0159] 本发明的至少一些实施方式可以通过位于服务器侧的被称为网络循环加速器WCA 的模块来实现。
[0160] 所提出的网络循环加速器WCA也可以被视为在服务器上运行并且被人为插入到 目标网络应用中作为优化层的模块。通过这种方式获得准备发送回客户端的服务器响应 RESP作为输入,对其进行优化并且以包括重排的页面标记代码R_PMC的重排的响应R_RESP 的形式将其发送回客户端。重排的页面标记代码以统一且有序的方式进行优化,以具有:
[0161] -头部HEAD,其也包括至静态和/或动态的CSS元文件的链接CSSLINKS ;
[0162] - htlm 本体 BODY ;以及
[0163] -包括至静态和/或动态的脚本的链接的部分SCRIPT LINKS,其可选地位于重排 的页面标记代码R_PMC的底部处。
[0164] 这样的交互对于客户端和服务器两者均是透明的,客户端和服务器不会注意到重 排的响应是重新设计的响应。
[0165] 用简单数值示例来示出通过WCA的实施方式实现的技术优点。
[0166] 假设给定的网络应用使用:
[0167] - 10个静态脚本文件(每个10kb);
[0168] -存在于页面PMC中的5kb脚本代码部分;
[0169] - 10个静态CSS文件(每个10kb);
[0170] -在页面PMC中,3kb CSS代码部分;
[0171] - 5个动态脚本文件(每个10kb);以及
[0172] - 5个动态CSS文件(每个10kb)。
[0173]
【权利要求】
1. 一种用于响应于客户端浏览器的请求(REQ)而重排服务器响应(RESP)的方法,其 中,所述客户端请求(REQ)请求获得给定网页,并且其中,相关的服务器响应(RESP)包括具 有内部代码部分形式和外部代码部分形式的客户端指令的页面标记代码(PMC),所述外部 代码部分位于文件中,并且所述文件的链接处于所述页面标记代码(PMC)内, 所述方法包括以下步骤: a) 处理所述页面标记代码(PMC)以获得重排的页面标记代码(R_PMC),使得代码部分 中的至少一些根据优化准则以统一的方式进行分组;以及 b) 响应于所述客户端请求(REQ)来提供待发送至客户端(CL)的重排的服务器响应 (R_RESP),所述重排的服务器响应(R_RESP)包括利用前述步骤的处理所获得的所述重排 的页面标记代码(R_PMC)。
2. 根据权利要求1所述的方法,其中,所述外部代码部分包括外部脚本部分,所述外部 脚本部分包括在脚本文件中,并且其中,所述步骤a)包括以下子步骤: a21)将所述脚本文件的所有内容合并到一个脚本元文件中; a22)在所述重排的页面标记代码(R_PMC)中,优选在其底部,将所述脚本元文件链接; 以及 a23)从所述重排的页面标记代码(R_PMC)中移除至所述外部脚本文件的所有链接 (STRL)。
3. 根据前述权利要求中任一项所述的方法,其中,所述外部代码部分包括外部CSS部 分,所述外部CSS部分包括在CSS文件中,并且其中,所述步骤a)包括以下子步骤: a31)将所述CSS文件的所有内容合并到一个CSS元文件中; a32)在所述重排的页面标记代码(R_PMC)的头部中,将所述CSS元文件链接;以及 a33)从所述重排的页面标记代码(R_PMC)中移除至所述外部CSS文件的所有链接 (SCRL)。
4. 根据权利要求2所述的方法,其中,所述内部代码部分包括内部脚本部分(PSCC),其 中,所述子步骤a21)还包括将所有的所述内部脚本部分(PSCC)合并到所述脚本元文件中, 并且其中,所述子步骤a23)还包括从所述重排的页面标记代码(R_PMC)中移除所有的所述 内部脚本部分(PSCC)。
5. 根据权利要求1或4所述的方法,其中,所述内部代码部分包括内部脚本部分 (PSCC),并且其中,所述步骤a)包括以下子步骤: a51)将所有的所述内部脚本部分(PSCC)合并到一个脚本元文件中; a52)在所述重排的页面标记代码(R_PMC)中,优选在其底部,将所述脚本元文件链接; 以及 a53)从所述重排的页面标记代码(R_PMC)中移除所有的所述内部脚本部分(PSCC)。
6. 根据权利要求3所述的方法,其中,所述内部代码部分包括内部CSS部分(PSTC),其 中,所述子步骤a31)还包括将所有的所述内部CSS部分(PSTC)合并到所述CSS元文件中, 并且其中,所述子步骤a33)还包括从所述重排的页面标记代码(R_PMC)中移除所有的所述 内部CSS部分(PSTC)。
7. 根据权利要求1、2、4或5所述的方法,其中,所述内部代码部分包括内部CSS部分 (PSTC),并且其中,所述步骤a)包括以下子步骤: a71)将所有的所述内部CSS部分(PSTC)合并到一个CSS元文件中; a72)在所述重排的页面标记代码(R_PMC)的头部(HEAD)中,将所述CSS元文件链接; 以及 a73)从所述重排的页面标记代码(R_PMC)中移除所有的所述内部CSS部分(PSTC)。
8. 根据前述权利要求中任一项所述的方法,其中,通过以下方式与静态文件相比分开 地处理动态文件:创建动态元文件和静态元文件;将所述动态文件的内容合并到相应的动 态元文件中;以及优选将缓存报头添加到所述静态元文件,亦即具有非动态内容的元文件, 以使所述客户端在给定时间内对所述静态元文件进行缓存。
9. 根据前述权利要求中任一项所述的方法,其中,元文件中的至少一个被赋予全局可 见性。
10. 根据前述权利要求中任一项所述的方法,其中,对所述重排的页面标记代码和所述 元文件中的至少一个进行缩小和/或压缩。
11. 一种用于执行根据权利要求1至10中任一项所述的方法的步骤的计算机程序产 品。
12. -种用于响应于客户端浏览器的请求(REQ)而重排服务器响应(RESP)的系统,其 中,所述客户端请求(REQ)请求获得给定网页,并且其中,相关的服务器响应(RESP)包括具 有内部代码部分形式和外部代码部分形式的客户端指令的页面标记代码(PMC),所述外部 代码部分位于文件中,并且所述文件的链接处于所述页面标记代码(PMC)内, 所述系统包括: a) 用于处理所述页面标记代码(PMC)的装置,以便获得重排的页面标记代码(R_PMC), 使得代码部分中的至少一些根据优化准则以统一的方式进行分组;以及 b) 用于响应于所述客户端请求(REQ)来提供待发送至客户端(CL)的重排的服务器响 应(R_RESP)的装置,所述重排的服务器响应(R_RESP)包括利用前述项所获得的所述重排 的页面标记代码(R_PMC)。
【文档编号】G06F9/44GK104219277SQ201410230667
【公开日】2014年12月17日 申请日期:2014年5月28日 优先权日:2013年5月30日
【发明者】焦尔达诺·佩莱格里 申请人:西门子公司