2011-08-06 4 views
7

J'expérimente avec Rails 3.1 qui utilise Sprokets 2.0 comme «pipeline d'actifs» et essaye de le configurer pour utiliser les bibliothèques hébergées CDN en production, mais fichier hébergé local Pour le developpement.Utilisation de bibliothèques JS hébergées CDN pour la production dans Rails 3.1

à savoir dans le développement: jquery.js est chargé dans le cadre de application.js

mais dans la production: http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js est chargée à la place. Question de bonification: une raison pour laquelle je ne devrais pas faire cela?

+0

Je fais la même chose dans mes projets :) –

+0

+1 pour le faire droit. En fait, j'ai créé un projet il y a environ six mois qui supportait cela en plaçant un appel 'use_remote' dans le fichier cible. Cela a permis une résolution automatique des dépendances tout en profitant des scripts hébergés sur CDN. Vous pouvez vérifier le projet pour quelques idées - javascripto.org. J'ai cessé de travailler sur ce projet depuis l'introduction du pipeline d'actifs, mais je pensais que c'était pertinent. J'espère que le pipeline d'actifs soutiendra quelque chose comme ça. J'aimerais aussi voir quelque chose comme mon concept de paquets. –

+1

Comment avez-vous fait en sorte que Rails 3.1 utilise jQuery localement en développement et CDN en production? Je le faisais en 3.0, mais je ne sais pas comment le faire lorsque le pipeline d'actifs est activé. – Roman

Répondre

1

Il n'y a aucune raison de ne pas le faire. Le point de CDN de Google est que lorsque de nombreux sites différents nous utilisent le même fichier CDN, il est probable qu'il sera déjà mis en cache par le navigateur ou ailleurs. Tout le point du pipeline est de faire la même chose - compresser + paquet + loin-futurs en-têtes. La seule raison pour ne pas l'utiliser est que le CDN est loin et peu de sites que vous utilisez utilisent également le CDN.

Dans mon cas, je suis en Nouvelle-Zélande, et peu de sites locaux de n'importe quelle note utilisent le CDN. Cela ajoute une forte pénalité de première demande aux personnes visitant notre site (personne n'a obtenu le fichier lors de la navigation sur un autre site local). J'ai choisi de lancer jquery dans le bundle de production pour éviter les demandes et le temps passé à charger (environ 700mS de NZ).

YMMV!

Questions connexes