Comment vérifier si jQuery.ajax () en-tête de la demande est "304 non modifié"?
jqXHR.status
renvoie généralement 200
, même si l'en-tête demandé est "304 non modifié".
ifModified:true
n'aide pas beaucoup car il coupe la demande de données XHR.
De plus, les en-têtes seront mis en cache si la réponse provient du cache. J'ai pris cela comme une chance. Mon serveur envoie un en-tête md5 unique. Cela n'a pas le même effet que? Query = time (). Maintenant du côté JS, vérifiez le dernier en-tête md5 avec le courant. Si vous recevez le même en-tête MD5 qu'avant, la réponse provient du cache. J'ai tout oublié de JQuery mais j'ai vu qu'il était possible de définir et de lire les en-têtes.
<?php
$oldMD5=filter_input(INPUT_SERVER,'HTTP_CONTENT_MD5',int);
if(!empty($oldMD5)){
header('Content-MD5: '.(1+(int)$oldMD5));
}
--------------------------------------------------------------
<script>
var oldMD5=0;
//your Ajax implementation
Ajax.setRequestHeader('Content-MD5',''+oldMD5);
var newMD5=parseInt(Ajax.getResponseHeader('Content-MD5'),10);
if(newMD5 && oldMD5<newMD5,10){
oldMD5=newMD5;
//not cached
}else{
//cached
}
C'est un peu abusif, car md5 devrait être un hachage permettant de vérifier que les "données décodées sont les mêmes données que celles envoyées initialement".