Dois-je utiliser Bootstrap à partir du CDN ou faire une copie sur mon serveur?

Quelle est la meilleure pratique d'utiliser Twitter Bootstrap, de s'y référer à partir du CDN ou de faire une copie locale sur mon serveur?

depuis Bootstrap continue d'évoluer, je crains que si je me réfère au CDN, l'utilisateur verrait différentes pages Web au fil du temps, et certaines étiquettes peuvent même se casser. Quel est le choix de la plupart des gens?

96
demandé sur shapeare 2014-10-04 16:38:22

4 réponses

Scott Hanselman a un excellent article sur l'utilisation D'un CDN pour les gains de performance, mais gracieusement en revenant à une copie locale dans le cas où le CDN est en baisse .

spécifique à bootstrap, vous pouvez faire ce qui suit à charge à partir D'un CDN avec un repli local :

<head>
  <!-- Bootstrap CSS CDN -->
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
</head>
<body>
  <!-- APP CONTENT -->

  <!-- jQuery CDN -->
  <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
  <!-- jQuery local fallback -->
  <script>window.jQuery || document.write('<script src="/local/jquery.min.js"><\/script>')</script>
  <!-- Bootstrap JS CDN -->
  <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
  <!-- Bootstrap JS local fallback -->
  <script>if(typeof($.fn.modal) === 'undefined') {document.write('<script src="/local/bootstrap.min.js"><\/script>')}</script>
  <!-- Bootstrap CSS local fallback -->
  <div id="bootstrapCssTest" class="hidden"></div>
  <script>
    $(function() {
      if ($('#bootstrapCssTest').is(':visible')) {
        $("head").prepend('<link rel="stylesheet" href="/local/bootstrap.min.css">');
      }
    });
  </script>
</body>

* vous pouvez également faire le même test en utilisant YepNope ou fallback.js

* par commentaire de Flash et cette solution , réponse mise à jour de vérifier pour la classe .visible au lieu de tester pour rgb(51, 51, 51)

" * lorsque test si une feuille de style chargée , vous devez chercher un style qui aurait ont été appliquées, créer un élément, et voir si elle a été appliquée.


à votre question sur les meilleures pratiques, il y a beaucoup de très bonnes raisons d'utiliser un CDN dans un environnement de production :

  1. il augmente le parallélisme disponible.
  2. il augmente la chance qu'il y aura un cache-hit .
  3. il assure que le charge utile sera aussi petit que possible .
  4. il réduit la quantité de largeur de bande utilisée par votre serveur.
  5. il garantit que l'utilisateur obtiendra une réponse géographiquement proche .

pour votre souci de versioning, tout CDN valant son poids en sel vous permet de cibler une version spécifique de la bibliothèque afin de ne pas accidentellement introduisez des changements de rupture à chaque version.

149
répondu KyleMit 2018-03-03 15:31:02

dépend du site spécifique.

avez-vous beaucoup d'utilisateurs? Vous souciez-vous de l'utilisation de la bande passante? Est-ce que la performance est un problème (CDN peut accélérer les réponses) ?

vous pouvez créer un lien vers une version spécifique:

/ /maxcdn.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css

ou

//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css

de cette façon, vous n'avez pas à vous soucier des mises à jour des bibliothèques, c'est une meilleure pratique à garder à jour.

Je ne suis pas sûr de quelles sont les statistiques exactes sur le choix des développeurs, mais vous pouvez avoir un regard ici et voir des milliards de requêtes sont envoyées à Bootstrap CDN, ce qui signifie qu'il est robuste et sûr à utiliser.

9
répondu Ofiris 2014-10-04 13:01:46

j'ai essayé d'éditer la réponse de KyleMit mais le forum était en train de marquer comme un code indenté erroné, même si ce n'était pas, donc j'ajoute ma contribution juste ci-dessous:

comme la question est étiquetée comme un sujet (et pas seulement ), peut-être qu'il est utile de mettre à jour la réponse pour la nouvelle version de Bootstrap.

comme le cadre a ajouté un nouveau classe pour cacher des éléments sur sa quatrième version, nous devrions utiliser .d-none au lieu de .hidden dans ce cas.

tout reste le même sur cette affaire, sauf la version lib (bien sûr!)

0
répondu André Rocha 2018-02-21 16:34:00

Bienvenue Bootstrap 4.1 CA:

/ /stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css

0
répondu Greg0 2018-07-20 00:19:24