Dois-je charger des bibliothèques tierces depuis le fournisseur ou le CDN ?

J’ai vu des plugins qui téléchargent des bibliothèques tierces et les chargent en tant que fichiers locaux depuis /vendor, tandis que d’autres nécessitent d’appeler la bibliothèque via un CDN.

L’une de ces approches est-elle supérieure à l’autre en termes de bande passante ou de vitesse ?

Il y a une petite zone grise entre les deux. Vous pouvez configurer Discourse pour servir les ressources, y compris les fichiers JS des thèmes et plugins, via un CDN. Ainsi, même si votre plugin charge la bibliothèque externe depuis /vendor, elle sera chargée depuis le CDN que vous avez configuré dans Discourse. Cependant, il s’agit d’un CDN privé.

Cela dit, je ne pense pas que ce soit de cela dont vous parlez. Vous faites référence à des services comme https://cdnjs.com et https://www.jsdelivr.com, ce qui est un sujet légèrement différent : un CDN public.

Des services comme cdnjs disposent d’un vaste réseau de serveurs dédiés à ce type de tâche.

Donc,

Ils peuvent être plus rapides et ils aident effectivement à réduire la charge sur votre serveur.

Mais… cet avantage en termes de vitesse est également disponible si vous utilisez /vendor sur un site ayant configuré Discourse pour utiliser un CDN privé.

De plus, concernant la bande passante, la plupart des bibliothèques JS externes font moins de 20 Ko. Donc, bien que vous obteniez certaines économies… ce n’est pas vraiment un point majeur sauf si votre site reçoit des centaines de milliers de visites par jour.

L’un des avantages d’utiliser quelque chose comme cdnjs est qu’ils servent le même fichier et incluent des en-têtes de mise en cache.

Que signifie cela ? Eh bien, prenons jQuery par exemple.

De nombreux sites utilisent jQuery, et beaucoup d’entre eux utilisent cdnjs pour le distribuer. Lorsque cdnjs livre le fichier jQuery à l’utilisateur, il inclut des en-têtes de mise en cache, par défaut pour 1 an.

Cela signifie que si un utilisateur visite le site A – qui utilise cdnjs pour jQuery – puis visite le site B, qui utilise également le même fichier avec la même version, son navigateur n’aura pas besoin de télécharger jQuery à nouveau, car il est déjà en cache, ce qui accélère le chargement de la page.

Le point mentionné ci-dessus est le plus grand avantage à utiliser quelque chose comme cdnjs pour vos bibliothèques externes.
Cependant, très peu de bibliothèques sont aussi courantes que jQuery, donc cela dépend vraiment de la popularité de la bibliothèque.

Lorsque vous chargez des fichiers depuis cdnjs, vous devrez également vous assurer de les ajouter aux paramètres CSP.

Donc, je suppose que la réponse ici est… cela dépend.

Chargez-vous la bibliothèque telle quelle ?
Est-elle courante ?
Est-elle plutôt volumineuse ?

Si oui, peut-être utilisez un CDN. Sinon, restez simple et ajoutez-la simplement dans /vendor.

[cite=“Johani, post:2, topic:205357”]
Cela signifie que si un utilisateur visite le site A, qui utilise cdnjs pour jQuery, puis le site B, qui utilise le même fichier avec la même version, son navigateur n’aura pas besoin de télécharger jQuery à nouveau, car il est déjà en cache. Cela permet donc un chargement plus rapide des pages.
[/cite]

Petite mise à jour ici : Chrome, Safari et Firefox ne fonctionnent plus de cette manière. Il n’y a plus de cache partagé entre les sites :

Quelqu’un peut-il partager un lien vers un plugin qui utilise la méthode d’ajout de bibliothèques tierces via le dossier /vendor ou un CDN ?

Je n’ai trouvé aucune documentation à ce sujet et j’ai du mal à inclure une bibliothèque tierce dans mon plugin, à l’enregistrer correctement, à respecter la structure exacte du dossier et à écrire correctement l’instruction d’importation dans les fichiers du contrôleur.

Merci d’avance pour votre aide !

discourse-math pourrait être une bonne référence - il contient un certain nombre de scripts ‘vendus’ dans le répertoire /public. Ou un exemple plus simple pourrait être discourse-client-performance.