Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下载一些字节并保留其他字节_Javascript_Html_Ajax_File_Http - Fatal编程技术网

Javascript 下载一些字节并保留其他字节

Javascript 下载一些字节并保留其他字节,javascript,html,ajax,file,http,Javascript,Html,Ajax,File,Http,我一直在通过AJAX为我的新网站加载一个JavaScript文件,但随着文件变得越来越大,功能越来越多,当只有少数几个功能真正被使用时,加载这些文件的效率越来越低。如果我把文件分成几个部分,我最终还是会下载100个函数,使用的函数不到30个。如果我知道哪个函数在哪里开始和结束,例如3000字节和3300字节,我可以只加载这些字节吗?注意:我之所以添加HTML标签,是因为我相信网站管理员会有更多类似的经验,用HTML计算模块并让php交付代码 <div class="module" name

我一直在通过AJAX为我的新网站加载一个JavaScript文件,但随着文件变得越来越大,功能越来越多,当只有少数几个功能真正被使用时,加载这些文件的效率越来越低。如果我把文件分成几个部分,我最终还是会下载100个函数,使用的函数不到30个。如果我知道哪个函数在哪里开始和结束,例如3000字节和3300字节,我可以只加载这些字节吗?注意:我之所以添加HTML标签,是因为我相信网站管理员会有更多类似的经验,用HTML计算模块并让php交付代码

<div class="module" name="module1">
...
</div>

<div class="module" name="module2">
...
</div>

<div class="module" name="module3">
...
</div>

<div class="module" name="module4">
...
</div>

<script>
    var foundmods = $('.module');
    var names = '';
    foundmods.each(function(){
        var mod = $(this);
        names += '|'+mod.attr('name');
    });
    names = substr(names,1);

    $.getScript('js/needed_functions.js.php?modules='+names)
    .done(function( script, textStatus ) {
        ...
    });
</script>

这是一个非常简单的建议。

为什么你认为这样会更有效?@stark如果index.html使用3个300字节的函数,它必须立即加载整个3MB文件。所以我希望我可以加载这300字节,使用dev工具上的network选项卡来查看一个包含1000个函数的文件比一个包含30个函数的文件需要多长时间。我的直觉是不会有什么不同。也就是说,您可能希望将文件分解为相关功能块,以便您可以更轻松地维护它们并只加载您将使用的内容。正如建议所示:让php脚本决定需要哪些js函数,例如,对于正在使用或未使用的模块,然后调用selectedfunctions.js.phpI think,您可以在服务器端编写HTTP处理程序来实现这一点。但是,也许您更喜欢传递必要的函数名,而不是字节位置。我的问题是关于通过AJAX@dandavis:我同意您的看法。@user3088260:$。getScript是一种ajax速记,这是一种js解决方案。如果您要求服务器端解决方案,它看起来会有所不同。但这两种解决方案都为您的256kbps节省了带宽-users@dandavis那是个打字错误!我的意思是我不能使用服务器端code@user3088260:fair'nuf,如果您的HTTP服务器不支持范围,请使用范围,所有http1.1服务器都应该支持范围。然后你只需要一个大文件的源代码图,一个你需要的东西的列表。