Web应用异步渲染优化技术小结

设计前提

1. 性能尽可能高

2. 尽量减少Http请求数量,如一个Page只有一对Request和Response。从而方便搜索引擎的检索。

3. 并行执行业务逻辑(Action)


一、将页面划分为多个部分(组件或窗口,widget),每个部分的实际内容放置占位符(以便后面的输入填入)。

       具体填入方法

二、先将页面框架推出(flush)至客户端(浏览器)

三、后台同时并行执行各个部分(也即widget)的业务逻辑,耗时情况不一样

四、谁先执行完即谁先推出(flush)自己的内容至客户端(实际上渲染出的内容为js代码(+html代码),以调用第二步页面框架中预先定义好的js方法以在对应位置填充内容)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
struts-gpipe 提供了将 groovy 引入 struts java web 项目的功能, web页面模块化异步渲染。 这个项目的初衷是为了将groovy引入我们的struts web项目,在开发的过程中,发现有跟多可以做的是全,不过在最初的版本,struts-gpipe主要包括两个功能:1,经过简单的配置可以将groovy引入struts项目,这个时候我们可以将一些业 务逻辑代码从java code中提取出来放在groovy里面,至于为什么要把一些业务逻辑代码放在groovy里面,这是因为我们可以利用groovy动态语言的特性,想一 想,我们发布的时候再也不需要将java code编译成class然后在deploy。或许我们可以一秒钟搞定发布..这一点是振奋人心的..:)。但是这秒发的功能在struts-gpipe 在最初的版本中并没有做,后面会陆续加入。2,struts-gpipe的第二个主要功能是实现了异步响应的思想,我们通常的 web页面都是将所有内容渲染完才返回到页面的,如果这个页面很笨重,那么用户可能会遭遇到“白屏”的体验,这对产品来说简直是体验大打折 扣,struts-gpipe项目提供了将整个页面拆分成若干模块的功能,每一个模块都独立渲染,多个模块并发渲染,我们可以让一部分模块渲染完成之后先 返回给客户端,让另一部分模块渲染之后后返回给客户端,不用想,这样用户体验会好很多。struts-gpipe与struts和spring的整合:1,struts-gpipe提供注入spring容器bean的功能,用法一致。2,struts-gpipe提供ongl的功能,也就是会自动将模块属性引入 freemarker渲染,这一点是和spring mvc不同的,用过spring mvc的都知道,spring mvc向freemarker传入数据需要往model传入塞,而这一点struts使用了ongl技术,让用户不用写塞数据的冗余代码。struts-gpipe开发的时候尽量考虑到了用户的使用成本,因此将struts-gpipe引入项目配置起来相对还是比较简单的,下面简单介绍一下如何将struts-gpips引入我们的项目:1.web.xml配置    <filter>         <filter-name>struts2</filter-name>         <filter-class>com.gweb.filter.GStrutsPrepareAndExecuteFilter</filter-class>         <init-param>             <param-name>config</param-name>             <param-value>struts-default.xml,struts-gpipe.xml,struts-plugin.xml,struts/struts.xml</param-value>         </init-param>     </filter>struts-gpipe过滤器继承了StrutsPrepareAndExecuteFilter,在启动的时候会初始化struts-gpipe容器。2,struts.xml配置<constant name="gweb.groovy.dir" value="biz" />   <package name="gweb" namespace="/index" extends="gpipe-default">                 <action name="index" class="com.gweb.front.action.Index">                         <result name="success" type="gweb">/WEB-INF/ftl/index.ftl</result>                 </action>         </package>第一个配置的struts常量是配置groovy脚本的的路径, 这个路径可以相对resource目录,第二个配置是需要使用struts-gpipe的package需要继承gpipe-defaule的配置,第三 个配置表示一种struts的返回类型。struts-gpipe为struts返回类型添加了一个类型“gweb”,struts-gpipe会代理处 理index.ftl的渲染。3,脚本示例代码@GPipeMapping("m1") @Asyn class M1 implements GPipe{     private String m1;     @Override     String execute() {         m1 = "build by m1.groovy";         return "/WEB-INF/gpipe/m1.ftl"     }     String getM1() {         return m1     }     void setM1(String m1) {         this.m1 = m1     } }这里需要配置模块的名字,渲染方式:同步还是异步,返回的ftl路径。模块的名字和主模块里面名字对应:sync: ${GPipe_m1} anyn: ${GPipe_m2}其中GPipe_是我给模块名字起的前缀,这个固定,后面的对应groovy脚本里面用注解配置的名字。 标签:struts

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值