JavaScript,缓存php的帮助文件的稳定
问题描述:
我正在与JavaScript代码的HTML文件。该网站使用一些PHP文件与服务器通信(request.send ...)。基本上它工作得很好,但我有一些可靠性问题。我发现(开发者控制台的铬),有时有一个错误,如服务器上找不到xxxx.php文件(“无法加载资源:net :: ERR_NETWORK_IO_SUSPENDED”)。看起来服务器没有足够的可用性? 现在,我想加载页面时,从服务器加载所有的文件,使所有的文件缓存,使其更可靠? a)这是一个好主意吗? b)我如何告诉页面缓存所有文件。 谢谢。JavaScript,缓存php的帮助文件的稳定
function sendRequestSendCommand(nummer, text) { // Anfrage ID = 1
// Request erzeugen
if (window.XMLHttpRequest) {
request = new XMLHttpRequest(); // Mozilla, Safari, Opera
} else if (window.ActiveXObject) {
try {
request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
} catch (e) {
try {
request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
} catch (e) {}
}
}
// überprüfen, ob Request erzeugt wurde
if (!request) {
alert("Kann keine XMLHTTP-Instanz erzeugen");
return false;
} else {
var url = "SendeKommandoAnWatch.php";
// Request öffnen
request.open('post', url, true);
// Requestheader senden
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
// Request senden
request.send('num='+nummer+'&mycountry='+mycountry+'&text='+text); // RD: mehrere mit & verbinden
// Request auswerten
request.onreadystatechange = interpretRequestSendCommand;
}
}
function interpretRequestSendCommand() {
switch (request.readyState) {
// wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
case 4:
if (request.status != 200) {
if(request.status == 0)
{
//alert("Es ist ein Fehler aufgetreten:\nPHP-File nicht gefunden!\nBitte versuchen sie es erneut.");
}
else {
//alert("Es ist ein Fehler aufgetreten: "+request.status);
}
} else {
var content = request.responseText;
console.log('Antwort vom Server = ' + content);
try {
var response = JSON.parse(content);
}
catch(err)
{
console.log('Fehler aufgetreten: konnte serverantwort1 nicht interpretieren');
state = 9;
}
if(response.success == 1)
{
console.log('rücksetzen der nummer an server übermittelt' + response.tokenID); // sonst hier keine weitere aktion mehr (nicht mehr warten)
//console.log('tokenID vom Server = ' + response.tokenID);
//tokenID = response.tokenID;
//state = 85;
}
else
{
console.log('Verbindung zum Server nicht erfolgreich! ERROR 101');
state = 9; // error
}
}
break;
default:
break;
}
}
答
我认为你需要在执行它们之前为你的ajax调用指定一个(更大的)超时。
request.timeout = 30000;
至于缓存,你应该尝试在你的htaccess以下作为一个开始(如果到期/头模块是在Apache中提供):
<IfModule mod_expires.c>
<IfModule mod_headers.c>
#Proxy servers may cache
Header append Cache-Control "public"
Header append Vary: Accept-Encoding
</IfModule>
# Enable expiration a month in future by default for everything. (this could be tuned with "ExpiresByType".)
ExpiresActive on
ExpiresDefault "access plus 1 month"
</IfModule>
顺便说一句,我是初学者:-) – hewald
另外,如果我是你,我会提高我的服务器容量, –
我不会自己托管这些文件。这些文件被复制到托管商。 – hewald