Désactiver le cache buster de Sencha Touch

Sencha Touch intègre par défaut depuis la version 2.0 un système de cache busting qui va permettre à chaque requête HTTP ajax envoyée d’y ajouter un timestamp en paramètre GET. De cette façon, la requête en elle-même est nouvelle pour le navigateur et il ne cherchera pas à vous envoyer plutôt une version pré-cachée qui aurait été executée avant.

Ext.Loader, le cache buster de Sencha Touch

Ce système est particulièrement pratique étant donné du gestionnaire de dépendances dynamique, Ext.Loader, intégré au framework. A la manière de RequireJS, il charge en ajax les fichiers core du framework que vos classes utilisent : cela permet d’éviter de tout charger, tout le temps, surtout si vous n’utilisez que la moitié des composants.


Il va également être très utile pour la distribution de votre application, en enlevant du fichier final les parties inutilisées du framework.

Points d’arrêts

Ext.Loader ajoutant le timestamp aux requetes

Ext.Loader ajoutant le timestamp aux requetes

Mais le cache buster va alors prendre tout fichier comme un nouveau. Vos Chrome DevTools ne pourrons pas mémoriser la ligne du point d’arret que vous venez de mettre, pour le garder lors de la prochaine actualisation. Vous devrez alors à chaque chargement de votre page html les remettres.
C’est pourquoi je désactive ce système, préférant indiquer au navigateur lui-même de ne pas cacher mes ressouces plutôt que de laisser le framework le faire. Afin de le désactiver, vous devez changer la configuration de votre app, dans le fichier « app.js », avant l’initialisation de Ext.Application.

1
Ext.Loader.setConfig({disableCaching:true});
Requete sans timestamp

Requete sans timestamp

 

Requêtes de données

Vous pouvez aussi désactiver ça pour les requêtes liées à du chargement de données, que ça soit manuellement avec le singleton Ext.Ajax ou dans les Ext.Store eux-même.

Pour ca, vous pouvez ajouter :

1
2
3
4
5
6
7
8
9
10
.......
config: {
   model:'App.model.Employee',
   proxy: {
    .....
      disableCaching:false
    .....
   }
}
......