<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    stone2083

    資源如何避免多線程下載

    今天在一次會議中,有朋友問我,如何避免資源被迅雷等工具多線程下載?

    確實,一些中小企業站點,尤其是個人站點,由于沒有過多資金,服務器承受不了大的壓力,站點提供的資源,一旦被迅雷等多線程工具下載,
    對服務器的壓力還是蠻客觀的。

    那么有什么辦法避免多線程下載呢?其實最簡單的辦法,就是服務端根本就不要提供Content-Length值。試想一下,如果多線程下載工具得不到文件總大小值,如何分配去分配每個線程需要下載的量呢?不得已,只能通過單線程下載了。

    以http下載為例,我寫了一個提供下載的servlet,由于不返回Content-Length值(只返回了ContentType值),這個serlvet返回的流,只能單線程下載。
    public class Download extends HttpServlet {

        
    private static final long   serialVersionUID = 8401962046132204450L;

        
    private static final String FILE_PATH        = "/home/jones/tmp/sample.zip";

        @Override
        
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            resp.setContentType(
    "application/octet-stream");

            OutputStream out 
    = resp.getOutputStream();

            FileInputStream in 
    = new FileInputStream(FILE_PATH);
            
    int readLength = 0;
            
    byte[] cache = new byte[1024];
            
    while ((readLength = in.read(cache)) != -1) {
                out.write(cache, 
    0, readLength);
            }
            in.close();

            out.flush();
            out.close();
        }
    }

    同樣的道理,只要配置服務器不要返回Content-Length值,那么就可以有效避免多線程下載了。

    posted on 2008-03-17 21:58 stone2083 閱讀(891) 評論(2)  編輯  收藏 所屬分類: misc

    Feedback

    # re: 資源如何避免多線程下載[未登錄] 2008-07-18 09:33 agapple

    如果所有的下載請求都經過servlet讀入與寫入,大量的下載請求會壓垮服務器
    我記得在javaeye看過robbin的一片文章,將下載文件直接推給網卡buffer,讓操作系統負責處理下載請求, 比如lighttd的X-sendfile
      回復  更多評論   

    # re: 資源如何避免多線程下載 2008-07-18 20:39 stone2083

    文章的本意不是說通過servlet,來控制文件的下載。
    而是站在協議的角度上,通過servlet的例子,來說明,只要修改content-length的值,就能達到“只允許單線程下載資源“的目的。
    雖然,通過修改協議的規定,擅自修改http頭信息的方式的做法,不符合規范。但是對于小站點來說,是一個成本最小的方法。
    站點上的圖片等,都是資源,如果都允許多線程下載,那么用戶量一多,對于小網站來說,還是有點困難的。
    文章采用servlet,僅僅用于舉例說明.真正的應用上,可以通過修改apache,lighttpd,等web服務器的配置,來達到這個目的。

    如果是資源的下載,那么肯定通過更為專業的ftp server來對外服務。而不是采用http協議。當然傳統的ftp server,也是有IO消耗的。

    至于樓上所說的X-sendfile,我也看過javaeye的文章(http://robbin.javaeye.com/blog/154538)。X-sendfile,確實是一個很先進的理念(至少我看來是,或許我是一個很老土的人)。
    但是自己對這個沒有任何嘗試,也沒有更多的評論資格。  回復  更多評論   

    主站蜘蛛池模板: 在线观看午夜亚洲一区| 亚洲va无码专区国产乱码| av成人免费电影| 亚洲国产精品无码久久一线| 日韩人妻无码精品久久免费一| 精品亚洲国产成人| 亚洲国产精品成人AV无码久久综合影院 | 亚洲AV无码国产精品色午友在线 | 无码日韩人妻av一区免费| 国产亚洲精品成人久久网站| 国产亚洲一区二区精品| 国产亚洲综合精品一区二区三区| 久久国产亚洲电影天堂| a级毛片在线免费看| 亚洲色成人网站WWW永久四虎| 久久精品国产亚洲一区二区三区| 四虎永久在线观看免费网站网址 | 亚洲色成人网站WWW永久四虎| 亚洲永久精品ww47| 成年性午夜免费视频网站不卡| 国产免费内射又粗又爽密桃视频| 免费又黄又爽的视频| 色妞www精品视频免费看| 亚洲精品不卡视频| 中文字幕亚洲不卡在线亚瑟| 免费看美女让人桶尿口| 免费国产黄网站在线观看视频| 一区二区三区精品高清视频免费在线播放 | 亚洲成AV人片在线观看无| 国产又粗又长又硬免费视频| 最近最好最新2019中文字幕免费| 国产免费AV片在线观看播放| 亚洲精品欧美综合四区| 亚洲成aⅴ人在线观看| 老司机在线免费视频| 国内精品免费在线观看| 一级日本高清视频免费观看| 亚洲精华国产精华精华液 | 亚洲精品亚洲人成在线| 亚洲1区1区3区4区产品乱码芒果| 亚洲国产成人私人影院|