Dans une application Web pur vanilla JavaScript qui n'utilise pas de personnel de service, je souhaite explicitement mettre en cache un fichier JavaScript installé sur un serveur de fichiers AWS S3. Le script suivant serait assis dans le fichier index.html pour l'application (je l'ai modifié l'URL comme il est un projet client):Récupération du fichier JavaScript à partir du cache api non exécutable
<script>
caches.match('https://s3.amazonaws.com/com.myproject/myjavascript.js')
.then(function(response) {
if (response) {
return response;
} else {
fetch('https://s3.amazonaws.com/com.myproject/myjavascript.js')
.then(function(res) {
return caches.open('mycache')
.then(function(cache) {
cache.put('https://s3.amazonaws.com/com.myproject/myjavascript.js',res.clone());
console.log(res.clone());
return res;
});
});
}
});
</script>
Je crois que ce code devrait faire ce qui suit: Vérifiez si le myjavascript. Le fichier js est dans le cache. Si c'est le cas, renvoyez le fichier JavaScript qui sera ensuite exécuté par le navigateur. Si myjavascriptfile.js n'est pas trouvé dans le cache, il sera récupéré et placé dans le sous-cache 'mycache' et finalement retourné au navigateur où il serait exécuté. Après avoir exécuté ceci, je trouve l'URL du fichier dans le cache avec une réponse de "Ok", mais le code n'est pas exécuté par le navigateur et je ne vois pas le contenu du fichier dans les sources dans le navigateur Chrome outils de développement.
Pourquoi cela ne fonctionnerait-il pas? Quel est le problème avec ma pensée à ce sujet.
Un grand merci, Fred
Qu'obtenez-vous dans les journaux de votre console? – Hunter
Etes-vous sûr que cela ne peut pas être fait en utilisant des déclarations dans htaccess, des entêtes http, etc.? De plus, ces commandes javascript sont-elles compatibles avec tous les navigateurs actuels? En outre, il pourrait y avoir une bibliothèque js qui gère cela. –
Merci pour votre commentaire Eyal. Fetch a un très bon support de navigateur (79% globalement en ce moment: http://www.caniuse.com/#search=fetch). C'est une exigence technique que j'ai utilisé Vanilla JavaScript pour cela et oui JQuery peut gérer cela. – Fred