2017-06-27 4 views
0

Donc, j'ai lu this et les docs Rails concernant CDNs here et je suis encore confus au sujet de deux choses conceptuellement.Comment les CDN fonctionnent-ils avec une application Rails?

  1. Quand est-ce que les fichiers Rails sont utilisés par les contrôleurs et les modèles? Comment invalider le cache CDN lorsqu'une image est mise à jour?

  2. Mais qu'en est-il des fichiers avec du contenu dynamique comme le nom et l'adresse d'un utilisateur. Comment cela est-il géré?

C'est ce que je comprends. S'il vous plaît me corriger si je misspeak:

En premier lieu, lorsqu'une demande est faite à dire myrailsapp.com, la demande va d'abord à la CAN parce que nous l'avons fait maintenant à l'adresse CDN CNAME de myrailsapp.com (disons qu'il est cdnmyrailsapp.com). Je suppose que les serveurs DNS comprennent pour router ces demandes vers le CDN. Le CDN vérifie si le contenu est mis en cache ou non. Si ce n'est pas le cas, je suppose que le CDN transmet la demande au serveur réel? C'est à ce moment-là que le contrôleur pour Rails est touché et qu'un fichier statique ou javascript est envoyé au CDN. Toutes les futures demandes pour ce fichier utilisent maintenant la version mise en cache sur le CDN.

+0

Normalement, une requête devait être acheminée vers un contrôleur. Il obtiendrait toutes les données nécessaires à tous les modèles de cette action, puis transmettrait ces données à la vue. Ce serait alors saisir toutes les données du CDN tout en chargeant la page pour la vue. Rails mettra ensuite ces éléments en cache via l'identifiant d'empreinte digitale qu'il a précompilé. Ce n'est que lorsque ces éléments sont modifiés que le cache est ignoré. – bkunzi01

+0

Le CDN sert à mettre en cache les ressources (images, feuilles de style, etc. qui ne changent pas de façon dynamique). Le DNS ne connaît pas le CDN, votre application le fait parce que vous avez configuré config.action_controller.asset_host sur le fichier env. C'est donc l'application rails qui «récupère» les actifs du CDN. Chaque fois que vous demandez quelque chose de dynamique, votre application va créer cela à la volée. La mise en cache à ce niveau est effectuée sur l'application elle-même et non via le CDN. –

Répondre

0

CDN ne peut servir que vos ressources statiques (fichiers compilés css et js, etc.), et non les modèles et les contrôleurs. (Vous pouvez obtenir ces fichiers précompilés par assets:precompile)

Votre serveur servir tout le contenu dynamique dyrectly sans CDN.

Vos fichiers sont placés sur CDN domaine (http://c000000.cdn.rackspacecloud.com par exemple), votre application laissée sur votre domaine (vous n'avez pas besoin de CNAME).

Pour les images, vous devez les envoyer manuellement (fog-aws, fog gems) lors du téléchargement.