Неаккуратное добавление timestamp к подгружаемой текстуре
08 сентября 2017 15:23
Сделал код, который подргужает изображение, сформированное с использованием параметров GET:
Однако при загрузке изображения добавляется такой хвост: "?v=08092017151609" ,невзирая на то, что в адресе уже присутствуют GET-параметры (нужно добавлять "&v=08092017151609", или вообще ничего не надо!). Сервер в ответ выдает 500.
m_tex.change_image(obj, "_texture1", TEX_URL+'?param='+value );
Однако при загрузке изображения добавляется такой хвост: "?v=08092017151609" ,невзирая на то, что в адресе уже присутствуют GET-параметры (нужно добавлять "&v=08092017151609", или вообще ничего не надо!). Сервер в ответ выдает 500.
08 сентября 2017 15:51
Сделал такие изменения в коде движка, чтобы обойти эту проблему:
version.js:
assets.js:
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);