# 서드파티 라이브러리는 vendor에서 로드할까요, 아니면 CDN에서 로드할까요?

**URL:** https://meta.discourse.org/t/should-i-load-third-party-libraries-from-vendor-or-cdn/205357
**Category:** Development
**Created:** [10월 6, 2021, 2:16오후 UTC](https://meta.discourse.org/t/should-i-load-third-party-libraries-from-vendor-or-cdn/205357 "2021-10-06T14:16:40Z")
**Posts on this page:** 1
**Showing post:** 2

<div class="post-metadata">

### Author: ![Johani](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/johani/32/176920_2.png) [@Johani](https://meta.discourse.org/u/Johani)
#### Post date: [10월 6, 2021, 4:51오후 UTC](https://meta.discourse.org/t/should-i-load-third-party-libraries-from-vendor-or-cdn/205357/2 "2021-10-06T16:51:46Z")

</div>

두 방식 사이에는 약간의 회색 지대가 있습니다. Discourse를 설정하여 테마/플러그인 JS를 포함한 에셋을 [CDN](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857)을 통해 서빙하도록 할 수 있습니다. 따라서 플러그인이 `/vendor`에서 외부 라이브러리를 로드하더라도, Discourse에 설정된 CDN에서 로드됩니다. 다만, 이는 프라이빗 CDN입니다.

그렇다고 해도, 말씀하시는 것이 그것인 것 같지는 않습니다. [https://cdnjs.com이나](https://cdnjs.xn--com-dh1ml82g) [https://www.jsdelivr.com](https://www.jsdelivr.com) 같은 서비스를 말씀하시는 것 같은데, 이는 공적 CDN이라는 다소 다른 주제입니다.

cdnjs와 같은 서비스는 이러한 용도로 전념하는 서버의 광범위한 네트워크를 보유하고 있습니다.

 ![cdnjs servers](https://global.discourse-cdn.com/meta/original/3X/5/f/5f94d1d8913466bf6ab9cbb4e8b53e3358a20a27.png)

즉,

> [@Nacho\_Caballero](#):
>
> 대역폭/속도 측면에서 한 방식이 다른 방식보다 더 나은가요?

더 빠를 수 있으며, 서버의 부하를 줄이는 데 도움이 됩니다.

하지만… 그 속도상의 이점은 Discourse를 프라이빗 CDN을 사용하도록 설정한 사이트에서 `/vendor`를 사용할 때도 동일하게 적용됩니다.

또한 대역폭에 관해서는, 대부분의 외부 JS 라이브러리는 20Kb 미만입니다. 따라서 일부 절감 효과는 있지만… 사이트가 매일 수십만 뷰를 받지 않는 한 큰 문제는 아닙니다.

cdnjs와 같은 것을 사용하는 이점 중 하나는 동일한 파일을 서빙하고 캐싱 헤더를 포함한다는 것입니다.

그것이 무엇을 의미할까요? 예를 들어 jQuery를 생각해 보겠습니다.

많은 사이트가 jQuery를 사용하며, 그중 많은 사이트가 cdnjs를 통해 jQuery를 전달합니다. cdnjs가 사용자에게 jQuery 파일을 전달할 때 캐싱 헤더를 포함합니다 - 기본값은 1년입니다.

즉, 사용자가 cdnjs를 통해 jQuery를 사용하는 사이트 A를 방문한 후, 동일한 버전의 동일한 파일을 사용하는 사이트 B를 방문할 경우, 브라우저가 jQuery를 다시 다운로드할 필요가 없습니다. 이미 캐시에 저장되어 있기 때문입니다. 이는 더 빠른 페이지 로딩으로 이어집니다.

위에서 언급한 점이 외부 라이브러리에 cdnjs와 같은 것을 사용하는 가장 큰 장점입니다.  
그러나 jQuery만큼 일반적인 라이브러리는 매우 적으므로, 실제로는 해당 라이브러리의 보편성에 따라 달라집니다.

cdnjs에서 파일을 로드할 때는 [CSP 설정](https://meta.discourse.org/t/mitigate-xss-attacks-with-content-security-policy/104243)에 이를 추가해야 합니다.

따라서 여기서는… 상황에 따라 달라진다고 할 수 있습니다.

라이브러리를 있는 그대로 로드하고 있나요?  
보편적인가요?  
크기가 큰 편인가요?

그렇다면, _아마도_ CDN을 사용하는 것이 좋습니다. 그렇지 않다면, 단순하게 유지하고 `/vendor`에 추가하는 것이 좋습니다.

---

_[View the full topic](https://meta.discourse.org/t/should-i-load-third-party-libraries-from-vendor-or-cdn/205357)._
