网站页面静态化技术交流文档

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1页面静态化技术交流文档2提纲创意回顾背景技术关键词系统简介系统设计系统实现流程参考资料Q&A3创意回顾目前随着互联网技术的深入发展和技术的不断日新月异,互联网应用程序的功能性和复杂性也在日益提高,从而,要求这些应用程序的性能表现越来越苛刻,为了提高互联网应用程序的性能,业界都采用多种技术来提高互联网访问速度,降低服务器运算负荷。公司的数商产品也不例外,随着其逐渐成熟以及产品用户的激增,产品的性能瓶颈日益凸现,我们都希望伴随着数商3.0新产品的推出,能够较为有效的解决这个问题。本文档介绍的动态执行页面静态化的系统及方法,能够在程序执行期把用户访问过的页面保存起来,存储在服务器的磁盘上,成为不带有动态语法解析程序的纯静态资源文件,当用户再次请求浏览相同的页面时,就会直接访问这些静态资源文件,不会再去重复且耗时的解析动态程序,从而显著降低服务器运算负担,提高互联网资源利用率。4背景技术目前实现页面静态化技术的方式有如下所列三种:非运行期静态化方法:该方法一般实现为管理员在网站后台发布新内容的同时就立刻生成相应内容的静态页面。客户后期访问的时候都是直接访问的这个静态资源,这个静态资源在访问之前就存在并存放到指定位置,因此称为此页面的生成是“非运行期静态”的。例如,我们集团的“一大把”项目的页面静态化就是这种方式实现的。运行期利用服务器缓存所实现的页面静态化技术该方法一般实现于客户端程序或资源性能受限的手机、PDA产品。它通常利用IE的缓存和服务器的缓存技术实现静态页面的存储与访问。运行期生成静态化资源的页面静态化技术该方法一般实现于客户端程序或资源性能受限的手机、PDA产品。它通常利用IE的缓存和服务器的缓存技术实现静态页面的存储与访问。5关键词1—URLRewriteUrlRewrite是Apache用来实现页面网络地址重定向的技术。Apache的Rewrite模块,提供了一个基于规则的重写(rewrite,也许译为重构更为合适)引擎,来实时重写发送到Apache的请求URL。这个模块使用一个基于正则表达式解析器开发的重写引擎,根据web管理员定义的规则来实时(onthefly)重写请求URL。它支持任意数目的重写规则,以及附加到一条规则上的任意数目的规则条件,从而提供了一套非常灵活和功能强大的URL处理机制。URL处理操作的实施与否,依赖于各种各样的条件检查,如检查服务器变量、环境变量、HTTP头字段、时间戳的值,甚至外部数据库的检索结果。这个模块可以在服务器范围内(http.conf)、目录范围内(.htaccess)或请求串(query-string)的一部分处理有关的URL。重写的结果URL,可以指向一个站内的处理程序、指向站外的重定向或者一个站内的代理。利用这种技术,我们可以将动态请求的网络地址按照我们既有的规则(动态页面请求参数与静态化的页面名称相互转换),转换为静态页面网络地址。例如:网站页面是动态的网面=123使用UrlRewrite转换后可以访问静态化后的页面来访问。6关键词2—SSISSI技术称为服务器端嵌入技术,其技术实质是将浏览内容发送到客户端浏览器之前,将文本、图形或应用程序信息变为用SSI技术所解析的语句,并包含到网页中。例如:〈html〉〈head〉〈title〉myfirstSSIpage〈/title〉〈/head〉〈body〉欢迎您(于〈!--#echovar=date_local--〉)访问本网站。〈/html〉标记在上面文档中的“〈!--#--〉”为SSI语句,其结构表明了SSI命令会被服务器翻译执行,将翻译的结果送到客户端。我们可以在浏览器中用“查看→源文件观察源代码:〈html〉〈head〉〈title〉myfirstSSIpage〈/title〉〈/head〉〈body〉欢迎您(于dec061999)访问本网站。〈/html〉7关键词2—SSI(续)文档中的html被直接传到了客户端,而SSI命令得到了执行。SSI代码在客户端是不可见的,客户端只能看到它执行的效果。在网站维护中常常碰到的一个问题就是,网站的结构已经固定,却为了更新一点内容而不得不重做一大批网页。则SSI技术提供了将一个网站的基本结构放在几个简单的HTML文件中,而HTML内可变化的内容用SSI技术提供的include命令得以执行,这些SSI的include命令包含的片断,我们称之为组件。以后我们要做的只是将文本传到服务器,让程序按照模板和include的页面片断自动拼装并生成网页,从而使管理大型网站变得容易。数商使用SSI技术主要使用的是#include指令,该指令用来实现服务器端页面包含。其具体的指令格式如下:!--#includevirtual=文件名称--virtual指定相对于服务器文档根目录的位置8系统简介为实现动态执行期的页面静态化技术,我们的页面静态化系统主要由以下5部分构成:1.用户界面层该部分是系统与用户交互的接口,该部分由框架HTML页面组成,框架页面引用SSI技术,拼装组件页面。2.页面组件层该层主要由本专利发明自定义的框架页面的组件占位符构成,该层描述了所有组件的信息,包括组件名称,组件实例编号,组件中文名称,页面URLRewrite规则。3.Web控制层该层是实现动态静态化技术的核心层。URLRewrite定位静态资源,是否实施静态化策略,后台动态程序的访问都由此层来控制。4.Web资源层该层存放的是客户网站组件的静态化资源文件。所有已被静态化的页面全部在这里存放。5.应用层该层是组件动态程序的执行层,如果所需访问的组件没有静态化资源,则请求会转发到这里来动态的执行并返回客户组件的实际内容。9系统简介–(图)用户界面层11页面组件层12应用层15WEB控制层13WEB资源层1410系统设计确定可以页面静态化的内容1)各种内容数据本身可以静态化;2)改变频率比较低的信息类表,比如信息、产品基本分类展示等可以静态化3)瞬时的、变化频繁的列表不能实现静态化;比如,热点产品排行展示实现页面静态化的技术1)Apache的Mod_rewrite模块,实现请求转发功能;2)通过Filter,把动态请求转化为静态页面,主要思路就是当动态请求处理结束后,先把响应结果存储在文件中,然后再返回;3)应用Spring的AOP技术,实现对网站静态页面的统一管理4)JSP的标签技术,可以封装动态请求,可以在不改变开发人员编码习惯的情况下,把动态请求转换为静态请求11系统设计–模块分解图12系统实现流程(1)网站页面是由基础模板HTML页面和许多由SSI技术所提供的include函数指令组装的页面组件占位符构成的。例如:divid=comp-frontMember_Login-123name=会员登录!--#includevirtual=/comp-frontMember_Login-123--/div其中/comp-frontMember_Login-123即为服务器所要执行的行的语句(即组件占位符)。页面除了包含这些用include命令标识的组件外,同时也包括其它Internet资源信息,例如:文本、图形、插件或应用程序信息等等。页面组件占位符根据标准的SSI技术,在Apache服务器端将组件内容逐个解析,然后在服务器端拼装为一个整体的页面返回给客户终端浏览器。客户访问网站页面时,每个组件在页面装载事件中通过SSI向apache服务器发送请求;请求地址为:/comp-ID-Name;ID为组件类型名称标识,Name为组件实例名称。此步骤如图201所示。13系统实现流程(2)Apache服务器接收到请求后,利用Apache的UrlRewrite模块,将组件占位符转换请求转换为组件静态化文件路径。如果在Apache服务器上能够找到目标目录下对应的组件静态页面,模板HTML页面利用SSI的include技术直接拼装这些静态化的组件页面内容,迅速返回给客户端。否则,再次通过UrlRewrite模块,将静态化路径转换为后端应用程序服务器(例如JBoss,一个开源的符合J2EE规范的应用服务器)可以解析执行的动态程序访问地址。然后Apache服务器通过连接器,将这个地址交由动态程序引擎执行,得到结果内容后,这些内容会再次通过连接器,传回Apache服务器。这时,Apache服务器的模板HTML页面会同样利用SSI技术的include命令拼装这些通过动态程序解析的组件页面内容,返回给客户端。此步骤如图202和203所示。14系统实现流程(3)后台应用服务器接收到请求后,根据开源的应用程序框架Spring与Struts的配置,转到相应的Action动作类中处理此请求,动作函数名以及动作函数中定义的方法可以按照规则从组件占位符ID中解析出来,并通过网站标识、组件标识ID、实例名称Name查找该组件在制作系统中添加的配置参数,正确解析组件内容。开源的应用程序框架Struts处理完毕后,根据组件配置参数中的一个页面流转参数,forward到一个J2EE标准的视图实现技术JSP中。最后将组件JSP视图的内容返回给客户终端浏览器。此步骤如图204所示。15系统实现流程(4)与此同时,通过访问一个统一的静态化控制接口,来判断该3步中得到的内容是否需要静态化。是否需要页面静态化的判断主要有以下两个级别:(一)产品级的组件开关;(二)客户网站级。组件产品级开关,每个组件分别定义一个,用来控制该组件在产品业务流程层次上是否应该实现静态化技术。所有组件的产品级开关都用一个标准的XML文档来记录,程序通过解析此文档,就可以明确地知道哪些组件实施静态化技术。而同时,利用XML文档来存储,也非常方便的利于这些关键参数的修改与维护。客户网站级,则出于客户网站运营的角度考虑,来控制是否对单个客户网站实施静态化。与组件的产品级开关类似,每个客户网站是否实施静态化技术也是利用解析存储在Apache服务器上的文件来维护,修改与维护此参数同样非常的高效与方便。静态化开关的控制逻辑如下所述:首先判断该客户网站是否需要进行静态化技术;如果需要,再判断该组件在软件产品级上是否支持静态化技术,如果支持就进入下一步骤,实施具体的静态化;否则不实施静态化。此步骤如图二205所示。16系统实现流程(5)此步,利用一个实现了JspWriter的类,在JSP页面中用新写的类作为out的实现类,并在JSP构造完视图后,把视图内容按照一定的静态化文件路径生成策略,存储到目标地址。生成静态化页面采用独立的线程执行。兼顾效率和安全。此步如图二206所示。17系统实现流程(图)201.客户访问组件化的SSI聚合页面202.根据UrlRewrite规则,将页面Rewrite到静态化文件资源地址204.不存在,应用层解析动态资源,将结果返回205.确定是否需要进行静态化操作206.需要,将返回内容保存成静态资源页面是否203.检查静态化资源文件是否存在存在,返回页面是18系统实现时序(图)19参考资料文档《数商3.0页面静态化技术方案》文档《数商3.0页面静态化技术专利申请文档》文档《数商3.0展示子系统框架架构设计说明文档》文档《ApacheHTTPServerVersion2.2》文档《ApacheServer2Bible》20Q&A谢谢大家!

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功