Internet Explorer 浏览器在同一时刻只能从同一域名下载两个文件。
百度的图片搜索采用了 t1.baidu.com ~ t8.baidu.com 八个域名来显示图片,消耗在 IE 浏览器端的 Blocked 时间小于0.001秒,非常快。

解决方案 »

  1.   

    还可以设置( Squid服务器)一下反向代理,增加缓存命中率
      

  2.   

    上万用户瞬间?那多搞几台服务器分流,广告费都有好多了阿
    如果上万不是瞬间,查看一下服务器apahe并发连接到底多少
    1000个缩略图,1000个请求,但不会用1000个连接把修改
    httpd.conf#是否允许稳固的连接(每个连接有多个请求)
    KeepAlive On#在稳固连接期间允许的最大请求数,0为无限制
    MaxKeepAliveRequests 1000 #在首页打开的这个连接中,最大完成1000个请求
    #在同一个连接上从同一台客户上接收请求的秒数
    KeepAliveTimeout:10
    #接收和发送前超时秒数
    Timeout 30##上面两项可以调整一个连接结束时间,结束越早越能把资源给别人用
      

  3.   

    这么说吧,4g内存的apache服务器,达到4000个连接数的时候,就崩溃了,如果用nginx,顶多50000个http请求也会崩溃,就1台服务器,有没有好的办法?
      

  4.   

    如果网站不能访问的时候,
    可以远程连接上去,主要考虑是web服务。可以提高该服务自身连接数/换服务
    如果不能远程连接上去,考虑是服务器负载过高,主要分2块:硬盘读写/操作系统连接数
    硬盘读写:换高速硬盘/RAID5/优化大量读写硬盘的程序/大量使用内存作为数据缓存
    操作系统连接数:和配置/内存大小/文件可以打开数目有关
    此外应用层软件设计不合理,会导致cpu占用率过高,也会使机器负载过高
      

  5.   

    谢谢楼上详细的回答,其实主要是解决精简连接数的问题,其他提升硬件并不是治本之策。1000个缩略图产生了1000个连接数,用户同时刷新,这个请求就不得了,如何优化网站的连接是最重要的,豆瓣是怎么做到的,80几个精简到1个,具体可用firefox的yslow插件检测
      

  6.   

    一个图片就是一个http请求,减少图片数量也是办法之一
      

  7.   

    你可以下载一张大图然后用css定位
      

  8.   

    楼上的提议不错. 用css定位 一张图片搞定他...
      

  9.   

    80几个精简到1个,这个……,是否可以考虑客户端的分流
    比如,用js按顺序来加载图片,当第一张图片加载完毕,再加载第二张,这样,相对来说,一瞬间只有一个请求,另外配置了KeepAlive,一个连接可以相应多次请求,总体来说apache的负担/服务器的负担,在瞬间要减少
    比如
    <script>
    var imgUrl=[],nowImg=0
    imgUrl[0]='http://www.baidu.com/img/baidu.gif';
    imgUrl[1]='http://www.google.cn/intl/zh-CN/images/logo_cn.gif';
    //…………function createImg(){
     var imgObj=document.createElement('img');
     if(nowImg<imgUrl.length-1){
    imgObj.attachEvent("onload",function(){getImg()});//本张图片加载完毕,创建下一张
    imgObj.setAttribute("src",imgUrl[nowImg]);
    nowImg++
     }
    else{
     imgObj.setAttribute("src",imgUrl[nowImg]);
    }
     document.body.appendChild(imgObj);
    }
    function getImg(){
    //每次创建图片延迟2秒。也就是每张图片 加载完后,再延迟2秒创建下一张
    //总体让瞬间只有一个请求
    setTimeout(function(){createImg()},2000)
    }window.attachEvent("onload",function(){getImg()})
    </script>
      

  10.   

    具体怎么做法?对这个挺感兴趣。。告诉我怎么查看HTTP的请求数,我帮你研究一下解决的方法。
      

  11.   


    稳定的系统 多少个链接都不会崩溃 只是会排队 呵呵上边有人说了 不会有LZ担心的事出现 呵呵 1000个请求浏览器也受不了啊500个并发 也不会超过1000个链接 APACHE轻松处理还有nginx呢 会处理更高的并发俺一直考虑的是怎么能提高并发数量快速显示图片 而不是1个1个的现实出来 唉 咋整好相反呢
      

  12.   

    谢谢,这个办法值得一试,让瞬间一个用户只有一个请求,这样就可以把1000个请求化解掉了。to dada20042030 ,你有firefox浏览器吗?装一下firebug插件和yslow插件就可以了,它会自动分析网站请求。to ten789:内存100%,都在排队,服务器就处于假死状态,跟崩溃差不多了,这个案例当中,1000个图片确实会建立起1000个请求,但一个连接数可以处理多个请求,跟浏览器设置有关,一般firefox是4个,ie是2个,但1000个请求是不是造成1000/4个连接我就不太清楚了。如果是的话,也会出现成百上千的并发连接,很恐怖
      

  13.   

    80个变1个,可试试合成一张图, css定位
      

  14.   

    如果你的这1000张图片长久以来一直都不发生变化,那么可以考虑用将多张图片集中到一张图片中(CSSsprites),然后利用CSS样式表中的background-potion调整显示图片的不同位置,从而达到从表面上看起来仍然是多张图片的效果。比如豆瓣的http://www.douban.com/pics/stars.gif这张图片,就是把各种等级的图片都放在一张图片里。就豆瓣这张图片来说的,能把5个请求骤减为1个。另外一种办法,因为考虑到用户不可能一屏就把1000张图片全部看到,可以考虑用js来达成这样的效果:最开始只下载用户能看到的一屏的图片,然后当用户滚动屏幕的时候,才去下载该屏对应的图片。在iphone的youtube视频中,就用到了类似的技术,当滚动到下一屏时,对应视频的图片才会开始下载,而不是一次性全部下载下来。
      

  15.   


    是这样:1000张图片是动态图片,每时每刻都有可能发生变化,动态加载的,所以不可能用css sprites方法;滚动屏幕的时候如果用户点的特别快还是一样的,多用户同时滚动,同时不停的刷新,还是会死
      

  16.   

    hehe,上面是个玩笑,实际上是降低为1个请求了,呵呵,如下图
      

  17.   

    to xinzhongyoufo :事实上,多域名也是没用的,因为请求总数一定的情况下,域名再多,她也是指向一台服务器,除非用一个服务器集群来分担负载
      

  18.   

    解决方案是什么?
    我现在遇到和你差不多的问题,能否发几分钟时间告知一下,我的信箱:[email protected]