2015-07-28 2 views
1

J'ai remarqué que lorsque nous utilisons DWR, il y a beaucoup de demandes de fichiers java-script provenant du navigateur. Il est apparu que les scripts DWR ne sont pas mis en cache par le navigateur.Comment mettre en cache les fichiers de script Java de l'interface DWR

Les en-têtes de réponse pour les téléchargements répétés ressemblaient:

Connection:Keep-Alive 
Content-Encoding:gzip 
Content-Length:1268 
Content-Type:text/javascript;charset=utf-8 
Date:Tue, 28 Jul 2015 11:27:17 GMT 
Keep-Alive:timeout=10, max=498 
Server:Apache 
Vary:Accept-Encoding 

Notez que dans les en-têtes de réponse, il n'y a pas en-tête Last-Modified. C'est la raison pour laquelle le navigateur recharge le script à chaque chargement de page. Ce script est un script d'interface DWR. Lorsque vous exposez des méthodes Java à l'aide de DWR (via une balise create dans le fichier dwr- .xml), DWR crée une interface javascript. Ce fichier implémente des méthodes javascript qui invoquent les méthodes java distantes (à l'aide de DWREngine._execute). Le script d'interface ne change pas, à moins que les méthodes exposées dans le fichier .dw- .xml soient modifiées et que l'application soit redémarrée. D'où le script aurait dû être cacheable.

Comment ajouter Last-Modified dans la réponse?

Répondre

0

Je suis surpris que ce n'est pas intégré dans DWR. Vous pouvez toujours configurer un Servlet Filter personnalisé dans votre application Web. Il est juste de supposer que le script ne changera pas pour la durée de vie du ServletContext. Peut-être que vous pouvez stocker un horodatage au démarrage de la webapp et que le filtre définit l'en-tête Dernière modification pour /dwr/*