有没有办法在http请求中组合文件?

时间:2020-12-28 00:13:48

标签: javascript httprequest tar

My website 的加载时间比最佳值更长,因为它请求了大量小文件,而这些小文件最终会占用大量请求。我最能控制的是许多数据文件,它们将始终加载,但将它们作为单独的文件使生成它们的过程更容易。有没有一种方法可以将一个 HTTP 请求放入(tar?)文件中,然后用 JavaScript 有效地处理它?这是我现在用来读入数据文件的函数。我真正想要的是一种请求可以轻松解析的文件的方法。文件结构非常简单,只是一个重复模式的 4 字节浮点数的集合。我想我可以,也可能将它们组合成一个稍微复杂一点的数据结构,但如果有一种方法可以组合所有这些文件并用 JavaScript 读取它,我很乐意看到它!

还有一些值得注意的是一些小图标文件,我有十几个我喜欢做同样的事情,合并成一个文件,然后加载那个文件。

function loadBinaryFloatArray(url, convertFunction,variable_name, onLoaded) {
    
    var mRequest = new XMLHttpRequest();
    mRequest.open('GET', url);
    mRequest.responseType = 'arraybuffer';

    mRequest.onreadystatechange = function () {
        if (this.readyState === 4) {

            // Get bytes
            var buffer = this.response;
            var dataview = new DataView(buffer);

            // Create buffer (4 bytes / float)
            var mFloatArray = new Float64Array(buffer.byteLength / 8);

            // Copy floats
            for (var i = 0; i < mFloatArray.length; i++) 
            {
                mFloatArray[i] = dataview.getFloat64(i * 8,true); // At every 8th byte
            }
            
            onLoaded(convertFunction(Array.prototype.slice.call(mFloatArray)),variable_name)
        }
    };
    mRequest.send();
}

1 个答案:

答案 0 :(得分:1)

嗯,最简单的图标就是使用 spritemap。

话虽如此。这通常不是你应该做的事情:加入服务器上的文件,因为如果失败,你必须重新发送这个巨大的请求。

我也看了你的网站。对我来说,它加载得非常快。主要问题是您一遍又一遍地请求相同的图像 (WhereIsRoadster.png),这可能是您网站速度变慢的原因。或者也可能与您的互联网连接有关。没有更多细节,我无法告诉你更多。