Форум

Неаккуратное добавление timestamp к подгружаемой текстуре

08 сентября 2017 15:23
Сделал код, который подргужает изображение, сформированное с использованием параметров GET:

m_tex.change_image(obj, "_texture1", TEX_URL+'?param='+value );


Однако при загрузке изображения добавляется такой хвост: "?v=08092017151609" ,невзирая на то, что в адресе уже присутствуют GET-параметры (нужно добавлять "&v=08092017151609", или вообще ничего не надо!). Сервер в ответ выдает 500.
08 сентября 2017 15:51
Сделал такие изменения в коде движка, чтобы обойти эту проблему:
version.js:
exports.timestamp = function(url) {
    if (TYPE != "DEBUG")
        return "?v=" + PREVENT_CACHE;

    var ts = date_str();
    // remove special symbols
    ts = ts.split(" ").join("").split(":").join("").split(".").join("");
    if(url.indexOf('?')===-1){
       ts = "?v=" + ts;
    }else{
       ts = "&v=" + ts;
    }
    return ts;
}

assets.js:
exports.get_text_sync = function(asset_uri) {
    // check in cache
    if (_loaded_assets[asset_uri])
        return _loaded_assets[asset_uri];

    if (cfg_ldr.prevent_caching)
        var filepath = asset_uri + m_version.timestamp(asset_uri);
....
exports.enqueue = function(assets_pack, asset_cb, pack_cb, progress_cb, json_reviver) {
    for (var i = 0; i < assets_pack.length; i++) {
        var elem = assets_pack[i];

        var asset = {
            id: elem.id,
            type: elem.type,
            url: elem.url,
            is_fetch: elem.is_fetch,
            request_method: elem.request_method ? elem.request_method : "GET",
            overwrite_header: elem.overwrite_header ? elem.overwrite_header : null,
            post_data: elem.post_data ? elem.post_data : null,
            param: elem.param ? elem.param : null,

            state: ASTATE_ENQUEUED,

            asset_cb: asset_cb || (function() {}),
            pack_cb: pack_cb || (function() {}),
            progress_cb: progress_cb || (function() {}),
            json_reviver: json_reviver || null,

            pack_index: _assets_pack_index
        }

        if (cfg_ldr.prevent_caching) {
            var bd = get_built_in_data();
            if (!(bd && asset.url in bd))
                asset.url += m_version.timestamp(asset.url);
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.