<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="优化请求 “开源节流” 心得" id="card1">
<p> 游客</p><p>
标题:优化请求 “开源节流” 心得<br/>
正文:<br/>
近期的开发涉及到考核系统，后台人员负责出题，而相应的用户则打开浏览器答题。早期的系统中，用户在考试开始的时候，试卷在浏览器中的展现完全依靠后端来渲染，使用struts生成整个页面，然后发送至浏览器，用户才能答题。这种模式的问题不言而喻，因为是一个考试系统，在考试开始的一瞬间，1000个用户同时点击&amp;ldquo;打开&amp;rdquo;按钮，服务器处理每一个用户的请求，再来生成一个成型的页面，这中间要消耗很多服务器的资源，效率十分低下，经常会导致五分之一的用户打不开考卷。     二期的开发中，为了分摊服务器的压力，把整个卷面的渲染工作交给了浏览器端，使用ajax获取各种考题的json数据后，通过js来把每一个题型都解析出来，大大提高了效率。    遗留的问题：     当然也不能说，二期的优化已经十分完美了，还是有一些瑕疵，一份完整的考卷总共有五种题型：单选，多选，判断，填空，问答。现有的实现是，通过五次ajax请求来把每一种题型的数据请求回来，然后再渲染出来（整份试卷），问题是，一个用户会有5次请求，100个用户就会有500次请求，1000个用户就会有5000次请求！！而且是在，一个整点（考试开始的时间）3分钟范围内。所以，对于整个优化效果来说，优化的程度还不是很完美，服务器还是&amp;ldquo;亚历山大&amp;rdquo;。    下一步的优化：    下一步的优化有两个思路：1，合并请求；2，异步（按需）加载试题；3，预加载；     合并请求：    在把每一种题型的流量大小统计一番后，得出如下结论：    单选：0.53KB/个； 多选：0.55KB/个； 判断：0.26KB/个； 填空：0.25KB/个； 问答：0.87KB/个    这些流量是纯文本的流量，如果说某个题中有图片，那么也只是img标签所占用的文本空间，图片的下载不需考虑，考虑一份通用的试卷情况。    单选-15道；多选-10道；判断-5道；填空-5道；问答-<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=568&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=568&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=568&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=568&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=568">查看评论(1)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=568">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>