У нас была та же проблема, что и у вас, с SAP MII, и я потратил несколько месяцев на несколько вызовов OSS для SAP, чтобы предоставить приемлемое решение.
Они сделали это в SP3 SAP MII (мы еще не обновили, но я надеюсь, что их исправление правильное), но это не будет применяться в вашем случае, поскольку вы используете SAP PO, но это все еще стек Java.
Поэтому я думаю, вам следует открыть вызов OSS, рекомендуя SAP ознакомиться с примечаниями SAP:
Они, вероятно, перенаправят вас к следующей теме переполнения стека: http://stackoverflow.com/questions/118884/how-to-force-browser-to-reload-cached-css-js-files
Но это всего лишь обходной путь, веб-сервер SAP на стеке Java, похоже, работает неправильно, и они должны внести исправления.
Надеюсь, что это поможет вам.
ИЗМЕНИТЬ
Hi,
Вот обновление, есть обходной путь, который мы иногда используем. У нас есть параметр URL, который используется для определения необходимости перезагрузки страницы. Ниже приведен фрагмент кода JS, который мы встроили на страницу index.html приложения SAPUI5.
Надеюсь, что это поможет вам.
<script>
window.onload = function () {
version = undefined;
fCheckVersionMatch = false;
onInit();
};
/***************************************************************************
* Function launch when we start the application it test
* - if the Reload parameters is set in the url
* - if we are loading an hold application with a false reload value
****************************************************************************/
var onInit = function() {
checkParamReload();
};
/***************************************************************************
* Check in the url if there is the reload value and if this value is less
* than the difference with the date now => avoid when using favorite link
* to load a previous version with an incorrect time stamp
****************************************************************************/
var checkParamReload = function() {
var sUrlParameters = window.top.document.location.search;
var regexReload = /(\?|&)reload=([^&]*)/;
var aReload = sUrlParameters.match(regexReload);
var nTime = aReload == null ? NaN : parseInt(aReload[2]);
if ( isNaN(nTime) || Math.abs(Date.now() - nTime) > 60000 ) {
// In case no reload tag is present or it's value is more than 1 minute ago, reload page
reloadPage(true); // True means force reload => reset retry count.
}
};
/***************************************************************************
* Reload page and make sure the reload param is updated.
* If force reload is used, retry count is resetted, otherwise it is
* it is incremented up to a limit, which - in case it is reached - stops
* the reload process and instead display an error message.
****************************************************************************/
var reloadPage = function (bForce) {
var retries = 0;
var oLocation = window.top.document.location;
var sSearch = oLocation.search;
sSearch = queryReplace(sSearch, "reload", _ => Date.now());
if (bForce) {
sSearch = queryReplace(sSearch, "retry", _ => 0);
} else {
sSearch = queryReplace(sSearch, "retry", function (n) {
if (isNaN(parseInt(n))) {
return 0;
} else {
retries = parseInt(n);
return retries + 1;
}
});
}
if (retries < 10) {
// Reload Page
window.top.document.location.replace(oLocation.origin + oLocation.pathname + sSearch + oLocation.hash);
} else {
// Display error
document.getElementById('Error').style.display = "block";
}
};
var queryReplace = function (sQuery, sAttribute, fnReplacement) {
// Match the attribute with the value
var matcher = new RegExp(`(\\?|&)${ sAttribute }=([^&]*)`);
var sNewQuery = sQuery.length < 2 ? `?${ sAttribute }=` : sQuery;
if (sNewQuery.search(matcher) < 0) {
// If we could not match, we add the attribute at the end
sNewQuery += "&" + sAttribute + "=" + fnReplacement("");
} else {
sNewQuery = sNewQuery.replace(matcher, (_, delim, oldVal) => delim + sAttribute + "=" + fnReplacement(oldVal));
}
return sNewQuery;
}
</script>
person
Almiriad
schedule
30.05.2017