2009-10-03 10 views
0

J'ai besoin d'écrire un filtre de Servlet pour inspecter le code HTML envoyé et de modifier tous les liens qui pointent vers/images dans un domaine différent afin qu'ils soient servis à partir d'un CDN (livraison de contenu réseau) plutôt que mon site.Modifier la réponse Http

Est-ce recommandé et comment puis-je y parvenir?

-Merci

Répondre

1

La façon la plus efficace serait de garder le chemin de l'image dans la configuration de l'application et utiliser différentes configurations pour le développement et la production. La version dev fera localhost (ou autre chose) et la version prod pointera vers votre CDN. Si la configuration n'est pas une option, Jason Hunter's Java Servlet Programming a un exemple de search/replacing outgoing html with a regex. Vous pouvez utiliser et adapter cela pour remplacer vos URL d'image.

Si votre serveur d'applications est doté d'un équilibreur de charge ou d'Apache, vous pouvez également y effectuer le remplacement. Il a l'avantage de ne pas polluer votre application avec la logique CDN. Mais l'inconvénient est qu'il est plus difficile à contrôler la version, etc.

+0

Merci. Cependant, le moyen le plus efficace que vous avez suggéré se traduira par un grand nombre de fichiers dans mon application, car actuellement les images sont référencées sous/images/... partout. Et ce n'est pas seulement une question d'images! javascript, css, fichiers d'aide etc, tout devra être externalisé. Par conséquent, je cherchais un moyen moins intrusif de le faire. J'ai aimablement essayé votre dernier sugg. Réécriture d'URL dans Apache, en effectuant une redirection 301 pour les images. Cependant, les demandes viennent d'abord à mon serveur, puis sont redirigées vers le CDN, ce qui représente un énorme surcoût. Je ne veux pas me fier à la mise en cache du navigateur. –

+0

Certains équilibreurs de charge peuvent modifier le code html sortant, donc pas besoin de magie 301. Il fait exactement la même chose que la servlet de recherche/remplacement, mais dans le matériel qui n'est pas votre serveur d'applications. – leonm

+0

super .. merci! –

Questions connexes