2010-10-05 3 views
2

J'ai recueilli des screencasts de rails de détecteurs bien connus qui, à un moment donné, lorsque votre site devient de plus en plus gros, la mise en cache de proxy est la solution. La mise en cache de proxy utilise etag, entre autres choses et puisque etags peut être plus spécifique et un validateur fort est peut-être le chemin à parcourir. Cependant, j'entends aussi que dans les scénarios de batterie de serveurs l'etag n'est pas la bonne solution car elle peut varier d'un serveur à l'autre (Comment?)etags et la batterie de serveurs

Cela semble contradictoire, c'est-à-dire que la mise en cache du proxy basé sur les balises électroniques est la plus probable une grande charge de fermes de serveurs équilibrée. Donc, si e-tag échoue dans cette situation, comment le font-ils? : last_modified n'est pas vraiment une bonne option.

Dans une application de rails, disons que si mes etags dans une action post index est

:etag => "all_posts_#{Post.count}". 

ce sera varier d'un serveur à si elle est une charge batterie de serveurs équilibrée?

Répondre

3

Habituellement, quand ils parlent d'Etags qui varie selon les serveurs, c'est en relation avec la connexion statique fournie par Apache. Par défaut Apache includes the file's inode in the Etag. Si les fichiers ne sont pas sur une ressource partagée (comme un NAS exporté NFS), alors l'inode du fichier sera différent sur chaque serveur. En règle générale, la recommandation est de configurer Apache comme:

FileETag MTime Size 

mais même qui a la possibilité de différences si le temps de modification varie selon les serveurs. Toutefois, pour le contenu non statique, vous générez l'Etag dans votre code, de sorte qu'il en serait de même sur plusieurs serveurs.

+0

Merci! Très rassurant :). Comment cela se passe-t-il normalement bien nginx et d'autres proxys inverses, est-ce assez simple ou y a-t-il des hashas (comme des apaches ici)? – badnaam

+0

Vous ne savez pas ce que vous voulez dire ici. Voulez-vous dire Apache derrière un proxy inverse, ou voulez-vous dire nginx derrière un proxy inverse? Ou voulez-vous dire configurer etags pour nginx? À moins que quelque chose n'ait changé récemment, je ne crois pas que nginx prenne en charge la génération de etags pour le contenu statique. Typiquement, etags ne sont pas aussi utiles pour le contenu statique que le dernier en-tête modifié peut trivialement être généré pour un tel contenu. Les Etags sont plus utiles pour les contenus dynamiques qui n'ont pas de date de «dernière modification» définie. – rjk

+0

oui désolé un peu confus, regardez mon autre poste http://stackoverflow.com/questions/3860343/reverse-proxy-confusion. Mais j'essaie essentiellement de comprendre comment inverser le cache proxy de ma configuration actuelle (nginx + passager, nginx utilisé comme serveur web). Je voudrais servir à la fois le contenu statique (images) et le contenu dynamique etagréé à partir d'un proxy inverse (à déterminer si nginx peut jouer le rôle de serveur proxy inverse/web ou aurais-je besoin de plusieurs installations nginx ou aurais-je besoin d'un produit différent? en sens inverse avec cette mise en place). Espérons que cela aide? – badnaam

Questions connexes