小余

灵感源于交流,创新出自思考

导航

关于JavaScript脚本中的alert思考

Posted on 2008-04-17 12:50  小余(Yice)  阅读(5263)  评论(18编辑  收藏  举报

   对于JavaScript脚本中的alert的作用只是单纯的在网页表单上弹出一个模态的警告对话框。在大部分的时候被用作对表单提交时作校验客户端输入合法性,如果用户所输入的信息不符合条件,则以alert加提示信息的方式来提醒用户。
    对于alert的使用在正常境况下不存在有争议,可以说alert还是有一定的帮助。但是存在争议的时使用alert会不会给服务器端造成压力。不会?或许大部分看到这里后第一个反应就是这样。
    说不会的人也有其相应的理由:客户端脚本,在客户端执行。怎么会给服务器端造成压力呢?这个解释没有任何问题。但是由于alert是以模态的形式弹出,所以我就提出了这个疑问,希望大家来讨论一下。
   如果在这种情况下:在服务器端往客户端回传数据的时候,其中包含有alert。也就是一下模式:

<html>
  
<body MS_POSITIONING="GridLayout">
A
<SCRIPT >alert("ee");</SCRIPT>
B    
  
</body>
</html>

在这种情况下用户可以看到网页在显示A之后就弹出alert警告框,之后用户如果不关闭alert对话框,则网页也就不会继续显示B。

问题也就处在这里:如果在Web开发中,alert以这种方式出现(有时候开发人员会以这种方式来提示用户信息保存正确或失败)。会不会给服务器造成过多的负载?
  确信会给服务器造成过多负载的人也有其解释的理由,alert以模态窗体出现,在浏览器处理过程中,遇到模态窗体时线程会暂时处理等待状态,直到模态窗体被取消。
那么也就使说在web请求过程中,alert以模态窗体如果不被关闭,那么浏览器当前的线程也会处于等待状态,由于浏览器和服务器的连接也会迟迟不被释放。如果真正如此的话,那么就会给服务器造成极大的压力。
    我对此进行了简单的测试,我假设在alert状态下,浏览器会处于等待状态。我用一下代码进行测试

        private void Page_Load(object sender, System.EventArgs e)
        
{
            
this.Page.Response.Write(System.DateTime.Now.Ticks+"||\n");
            
this.Page.Response.Write("<SCRIPT >alert(\"ee\");</SCRIPT>");
            
this.Page.Response.Write(System.DateTime.Now.Ticks+"||\n");
            
        }

测试是在.net下进行的,只是简单的判断alert之间服务器的时间和alert之后的响应时间。如果说浏览器会处于等待状态,那么二者之间后有一个比较明显的差值。而其这个值会随alert被关闭的时间越迟而越大。
        但是我测到的结果是二则相等。不伦等待多久去关闭alert。
        我从测试中猜想alert不会给服务器造成过多的负载,因为浏览器在处理web请求的过程中,进行远程数据请求和数据显示是分线程处理。所以即便alert的模态显示会使显示的当前线程处于等待状态,但是这并没有影响到远程数据请求。
      当然我的测试有点片面,如没有去监视服务器当时的状态,以及测试数据量的不足。但是只是从侧面去分析这个问题,希望大家能够共同讨论。