Selon le Q & A ici , j'aimerais implémenter un système de versement automatique similaire pour une application Web en cours d'exécution dans JBoss 5. Y a-t-il déjà quelque chose pour faire ce genre de chose, ou devrai-je écrire quelque chose moi même? Pour être clair: Ne pas savoir grand chose sur PHP, je ne suis pas sûr de quoi les analogues Tomcat / JBoss de PHP Combinaison Les approches recommandées par Pascal et Novice , voici ce que j'ai fini avec: p> .htaccess CODE>, etc. . sommes. Si je dois écrire ma propre version automatique, où puis-je commencer? Le principe est clair pour moi - réécrire l'URL à l'aide de l'horodatage du fichier, mais je ne sais pas grand chose à propos de la réécriture de l'URL avec JBoss / Tomcat. P>
Mise à jour: H2>
<outbound-rule>
<from>^/static/(css|js|images)/(.*)$</from>
<to>%{context-path}/static/%{session-attribute:cacheBust}/$1/$2</to>
</outbound-rule>
<rule>
<from>^/static/\d{10}/(css|js|images)/(.*)$</from>
<to>/static/$1/$2</to>
</rule>
3 Réponses :
Si vous ne voulez pas avoir avant votre application avec Apache httpd, vous pouvez utiliser un filtre de servlet personnalisé ou réutiliser le URL Réécrire le filtre . Ce filtre est basé sur l'Apache J'ai vu le filtre de réécriture URL avant. Pourriez-vous élaborer comment j'utiliserais cela? Je ne suis vraiment pas clair sur la façon dont j'appliquerais un filtre à ce problème, car je n'appellerais pas exactement une fonction JSP / JSTL enveloppée autour de chaque fichier JS / CSS inclus, et je ne sais pas comment obtenir le Date modifiée d'un fichier qui est en guerre. p>
BlockQuote> Eh bien, l'idée était d'imiter exactement la "solution php" de la réponse que vous avez liée (appelons cette option 1): p> Une autre approche (option 2) serait d'ajouter une chaîne de requête unique à l'URL du contenu statique, par exemple L'heure de démarrage du serveur: p> en vous JSP P>
pro: aucune URL réécrit plus de choses. Con: Moins optimal (le contenu sera demandé sur le redémarrage) mais acceptable) mais acceptable. P> Tout en recherchant sur le Web pour un certain code qui pourrait aider à mettre en œuvre l'étape 2 de l'option 1, j'ai trouvé le printemps et définir son mod_rewrite code> et offre des capacités similaires. En d'autres termes, il permettrait d'implémenter la même solution que la PHP une des autres réponses.
/css/my.123456.css code> dans
/css/my.css code> li> li>
code> qui obtiendrait un objet code> objet pour une ressource donnée à l'intérieur de la guerre et insérer
fichier # lastmodified () code> dans le retour voie vers cette ressource. li>
servlet code> du JSP pour le CSS. LI>
ol>
servleContextExtener code>
(par exemple sous la touche " Key " code>). LI>
OSWSRESURRESServille code >
qui fait quelque chose de similaire, vous pouvez regarder son code source. Mais, tout en lisant son Javadoc plus avec précaution, j'ai réalisé que ce servlet est en fait exactement ce que vous recherchez. Cartographiez-la comme ceci: p> ApplastModified code> propriété sur
true code>. Ma compréhension de la Javadoc est que cela devrait faire l'affaire. Ceci est l'option 3 et c'est imo la meilleure option si l'ajout d'une dépendance sur ce servlet n'est pas un problème. P> P>
J'ai déjà vu le filtre de réécriture d'URL auparavant. Pourriez-vous élaborer comment j'utiliserais cela? Je ne suis vraiment pas clair sur la façon dont j'appliquerais un filtre à ce problème, car je n'appellerais pas exactement une fonction JSP / JSTL enveloppée autour de chaque fichier JS / CSS inclus, et je ne sais pas comment obtenir le Date modifiée d'un fichier qui est en guerre.
Nous faisons ce qui suit dans notre application Web: p>
Ce n'est pas si utile. Comme je l'ai dit, je reçois le principe; Je cherche des spécificités de la mise en œuvre.
Je ne suis pas au courant de rien "intégré" qui gère spécifiquement ce problème. Ce que j'ai décrit ci-dessus, c'est exactement notre mise en œuvre et fonctionne assez bien pour nous.
solution suivante est mieux adaptée dans un environnement de production que vous seriez incrémentant le numéro de version pour chaque version
Approche:. Strong> p> Étapes: strong> p> update web.xml avec le motif d'URL, pour par exemple, p>
'mise à jour' abc.js dans le fichier JSP, pour par ex., P>
urlrewritefilter.xml d'écriture, pour par ex., P>
p>
<outbound-rule>
<from>^/v/(css|js|static)/(.*)$</from>
<to>%{context-path}/v/updateVersionNumberHere/$1/$2</to>
</outbound-rule>
<rule>
<from>^/v/updateVersionNumberHere/(css|js|static|images)/(.*)$</from>
<to>/$1/$2</to>
</rule>
Cela semble très prometteur. Va tester dès que possible. Peut combiner avec la suggestion de temps de démarrage du serveur de @ Pascal.
Cela l'orthographié magnifiquement. Merci!