如何減輕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();  
        }  
    }  
      
}  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM