如何减轻ajax定时触发对服务器造成的压力和带宽的压力?ajax-长轮训
2017-06-27 10:55
351 查看
AJAX长轮询的方法来解决频繁对后台的请求,进一步减小压力
在实现过程发现AJAX的多次请求会出现多线程并发的问题又使用线程同步来解决该问题
个人对ajax长轮询的一点愚见
ajax请示后台时,后台程序并没有立即返回信息而是挂起,当符合条件时才会返回信息
从ajax定时请求变成轮询模式:
后台代码:
在实现过程发现AJAX的多次请求会出现多线程并发的问题又使用线程同步来解决该问题
个人对ajax长轮询的一点愚见
ajax请示后台时,后台程序并没有立即返回信息而是挂起,当符合条件时才会返回信息
从ajax定时请求变成轮询模式:
function getRtmMsg(show){ $.ajax({ type:"POST", url:"rtmAction!getMsg.action", data:"show="+show, success: function(msg){ if(msg!=null){ bottomRight(); getRtmMsg("0"); } } }); }
后台代码:
/** * 实时消息Action * @author wangwei * May 23, 2013 */ public class RtmAction extends ActionSupport{ HttpServletResponse response = ServletActionContext.getResponse(); HttpServletRequest request = ServletActionContext.getRequest(); private static final ThreadLocal threadLocal = new ThreadLocal(); private static Object lock = new Object(); public void getMsg(){ String show = request.getParameter("show"); if("0".equals(show)){ RtmTemplate.cjzxShow = false; } try { //多线程同步解决并发问题 synchronized(lock){ while(!RtmTemplate.cjzxShow){ System.out.println("检测中。。。。"); Thread.sleep(5000); } } response.getWriter().println("1"); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } }
相关文章推荐
- 如何作到最小化读取SQL数据库并减轻服务器检索压力的十三点
- 对于企业级的C/S,如何减轻应用程序对数据库造成的压力
- 男人如何减轻工作与生活的压力
- 写给领导的一封web软件提速建议email ,没有服务器带宽的情况下我们如何可以作的更好!
- 30岁白领如何减轻工作压力?
- 30岁白领如何减轻工作压力?
- Ajax定时从服务器取数据
- AJAX技术如何节省应用的带宽:多次交互,每次少量更新
- 工作中通过js脚本减轻httpd服务器的压力
- 如何减轻图片服务器的IO,提高页面显示速度,减少客户端Receive
- 关于AJAX请求服务器后缓存数据,造成没有及时刷新的问题
- Ajax XMLHttp GET HTML 如何设定允许的服务器响应时间?
- 四级英语作文:如何减轻压力
- AJAX技术如何节省应用的带宽:多次交互,每次少量更新
- 在服务器上 .netFramework2.0 环境下,如何能在不改变服务器设置下,让站点能够运行 AJAX 程序
- Ajax ModelPopupExtender 如何触发服务器端事件
- 如何使win2003服务器自动定时重启的图文教程
- 在服务器上 .netFramework2.0 环境下,如何能在不改变服务器设置下,让站点能够运行 AJAX 程序
- [转]如何对IIS Web服务器动态网站进行压力测试
- 如何创建程序文档使服务器定时运行某些任务