브라우저에 jQuery가 설치되지 않은 이유는 무엇입니까?


19

여러 웹 사이트에서 jQuery를 사용하고 있으며 CDN을 사용하여 서비스를 제공하지만 방문자가 매번 jQuery를 다운로드하는 것은 의미가 없습니다. jQuery는 세계에서 가장 널리 사용되는 JavaScript 프레임 워크 여야합니다. 브라우저에 기본적으로 설치되어 있으면 더 이해가되지 않습니까?

이런 식으로 하루에 수백만 번 jQuery 다운로드를 막을 수 있습니다. 사람들이 소유 한 웹 사이트 나 CDN에서 가져옵니다.

실제로 필요한 것은 다음과 같은 if 문입니다.

 <!--[if jQuery gt 11]>

다른 사이트의 캐시에 jQuery가 이미있는 경우 사용자가 CDN으로 이동하지 못하게하는 데 도움이되는 것이 있습니까?


3
문제는-왜 사용자가 이미 가지고있는 것을 위해 사이트 나 CDN에서 새로 다운로드해야합니까? jQuery는 여러 위치 및 여러 버전에서 제공됩니다. 페이지 속도에 관심이 있고 사용자는 (특히 모바일) 대역폭에 관심이 있습니다. 라이브러리에 대한 금본위 제가 있다면 왜 사용하지 않습니까? 다른 예가 확실하며 버전 번호와 같이 합의 된 표준이있는 한 이들도 환영합니다.
user1914292

27
왜 jQuery는 아니지만 Angular, MooTools, Underscore 등이 아닌가? 그리고 각각의 버전은 무엇입니까? 브라우저에 모든 JavaScript 라이브러리의 사본이 포함되어야합니까?
user253751

15
"죄송합니다. 0.1 상위 버전의 브라우저로 업그레이드 할 때까지 내 웹 사이트를 사용할 수 없습니다"
VLAZ


4
이를 위해 캐싱이 수행됩니다. 그렇지 않으면, 버전 처리는 기본적으로 불가능하다
njzk2

답변:


55

Google의 Hosted Libraries 또는 cdnjs 와 같은 인기있는 CDN에서 jQuery를 제공하는 경우 방문자가 캐시 된 버전이 만료되지 않은 한 동일한 소스에서 해당 사이트를 참조한 사이트에있는 경우 다시 다운로드되지 않습니다.

jQuery는 말한 것처럼 인기있는 라이브러리이지만 브라우저와 함께 번들로 묶는 것은 몇 가지 이유로 발생할 수 없습니다.

  1. jQuery는 비교적 작습니다 (Flash와 같이 브라우저에 번들로 제공되는 라이브러리와 비교). 평균 사이트에서 가장 큰 성능 병목 현상은 jQuery 다운로드로 인한 것 같지 않습니다.
  2. JavaScript / ECMAScript가 개선됨에 따라 개발자는 jQuery에 의존 할 필요가 점점 없어지고 있습니다. ( youmightnotneedjquery.com 참조 )
  3. 다른 많은 인기있는 JavaScript 라이브러리가 있습니다. 브라우저는 JavaScript 코드의 저장소로 설계되지 않았습니다. 스크립트 인기도를 추적하고 덜 인기있는 라이브러리를 삭제하고 모든 것을 최신 상태로 유지하는 것이 개별 사이트의 웹 개발자에게 가장 좋은 방법입니다.

나는 이것을 이해하지만 지금은 code.jquery.com을 CDN으로 사용하고 있습니다. 그러나 다른 웹 사이트에서 googleapis 또는 cdjns를 사용하는 경우 브라우저는 다른 CDN에서 jQuery를 다시 다운로드합니다. 그것은 의미가 없으며 모든 곳에서 많은 시간 / 대역폭을 소비합니다. 이것에 추가하면 대부분의 경우 사람들이 jQuery1.7 +와 같은 것을 원할 때 더 악화됩니다. 브라우저가 리포지토리가 아닌 것에 대한 귀하의 요점을 이해하지만 우리는 일종의 '다중 소스에서 캐시'와 같은 규칙을 만들 수 없습니까?
user1914292

24
@ user1914292 이것은 모든 브라우저에 모든 버전의 jQuery가 있고 알려진 jQuery 소스에 대한 요청을 가로 채서 캐시 된 버전으로 바꾸는 경우에만 유용합니다. 약간의 차이가있는 경우 디버깅이 불가능한 버그가 발생할 수 있습니다. 이것은 웹 캐싱 이 작동하고 수십 년 동안 작동 했다는 사실에 의해 더욱 악화됩니다 . 브라우저가 jQuery 요청을 캐시하는 유일한 것은 아닙니다. 브라우저로가는 많은 라우터가 동일한 작업을 수행합니다. 대역폭 중요 했던 문제는 오래 전에 해결되었습니다. :
Luaan

4) 특정 사이트의 jquery 코드가 최근 업데이트에서 근본적으로 변경된 기능에 의존하고 더 이상 코드가 기대하는 기능을 수행하지 않으면 어떻게됩니까?
Shadur

1
@Ejay 아니요, 요청이 브라우저 캐시에서 제공되는 시간의 99 %가 추적 메커니즘으로 작동하지 않습니다.
sepiv

1
@BenSteward 예, 브라우저의 개발 도구를 사용하여 네트워크 패널을 확인하십시오 . 예를 들어, Chrome은 '캐시 비활성화'(DevTools 동안 개발자 도구 설정에서 활성화되어 있습니다). 캐시 제어 헤더 및 캐시 대상 및 기간에 대한 기타 요소에 따라 달라질 수 있습니다. developer.mozilla.org/en-US/docs/Web/HTTP/Caching
Nick

21

jQuery가 유일한 JS 라이브러리 일뿐만 아니라 브라우저는 잠재적으로 여러 버전을 포함해야합니다. 구글 CDN은 현재 나열 jQuery를 42 개 버전; jQuery UI의 44 버전; jQuery Mobile의 6 가지 버전.

웹 개발자는 웹 사이트의 요구 사항에 따라 다운로드 할 라이브러리 버전을 정의하는 것이 좋습니다. 당신이 당신의 웹 사이트에 jQuery를의 현재 생산 버전을 사용하는 경우 더 인기있는 CDN에서로드 한 후 방문자가 이미 어쨌든 캐시 된 것입니다 좋은 기회가있어.


14

브라우저는 엔진에 어떤 종류의 연료와 추가 부품을 넣고 차에 넣을 것인지 알아내는 것이 엔진 디자이너의 의무가 아닙니다. 만약 그들이이 브라우저를 사용한다면 다음 질문은 "왜 그냥 jQuery?"가 될 것이기 때문에 거대한 브라우저가 될 것이며, 결국 의존성 저장소를 유지하게 될 것입니다.

또한 모든 버전을 포함 할 예정입니까? 누군가 사용자 정의 버전을 사용하려면 어떻게해야합니까? 누군가 그 라이브러리를 사용하지 않으려면 어떻게해야합니까? 최신 릴리스를 얼마나 자주 병합하고 출시합니까? 버전이 다른 jQuery를 사용하는 다른 브라우저를 사용할 수 있습니까? 표준화 된 HTML, CSS 및 JavaScript 기능을 동일하게 구현할 수도 없습니다. 브라우저 관리자 중 하나가 라이브러리 또는 특정 버전을 포함하지 않으면 어떻게됩니까?

브라우저는 아직 완성되지 않은 솔루션을 구축 할 수있는 빌딩 블록과 환경을 제공합니다.

jQuery를 브라우저에 넣는 것이 현재 가장 큰 병목 현상이 아니기 때문에 사이트로드가 엄청나게 빠르지는 않지만 jQuery는 불필요하게 큰 라이브러리이지만 그 목적은 결코 빠른 라이브러리가 아니라는 데 동의 할 수 있습니다 대역폭). 빠른 로딩을 위해 특별히 설계되었으며 Zepto 와 같이 경량 인 다른 많은 라이브러리가 있습니다 .

jQuery의 크기와 대역폭 사용에 대해 정말로 염려한다면 사용하지 마십시오. 바닐라 JS 에 대해 들어 본 적이 있습니까? jQuery 자체를 포함하여 거의 모든 사람이 문자 그대로 사용하는 훨씬 인기있는 라이브러리입니다 ! 모든 브라우저에 포함되어 있기 때문에 이미 꿈을 이루었습니다!


2

jQuery와 같은 라이브러리를 사용하는 이유는 호환성입니다.

브라우저는 더 표준을 준수하지만 jquery 라이브러리를 사용하면 스스로를 제공하므로 브라우저 제품군과 버전의 차이점에 대해 걱정할 필요가 없습니다.

jquery를 직접 제공하면 일관된 API를 갖게됩니다.

jquery가 브라우저에 내장되어 있다면 사용자가 가지고있는 버전을 확인해야하며 브라우저로 돌아와 "이 사이트는 가장 잘 보입니다 ..."

따라서 jquery를 브라우저에 빌드하는 것은 의미가 없습니다.

또한 캐싱이 작동하므로 사용자에게 jquery 버전이없는 경우에도 한 번만 다운로드하면됩니다.


-3

실제로 여기에있는 응답자들은 질문에 대한 대답이 브라우저가 클라이언트 측에서 가장 널리 사용되는 라이브러리 및 polyfill을 포함해야한다고 생각한다는 것을 이해하지 못한다고 생각합니다.

질문을하는 사람은 jquery를 포함하지 않는 브라우저를 사용하는 사람들에게 적절한 버전이 제공되도록 조건부 주석을 사용할 수 있습니다.

Jquery는 또한 마이그레이션을 통한 자체 호환성 호환성 지원을 포함하므로 조건부 주석을 사용하여 완전히 새로운 라이브러리를 다운로드하지 않고도 패키지 버전의 이전 jquery 라이브러리를 가진 사람에게 레트로 지원을 제공 할 수 있습니다.

이것을 브라우저에 포함시키는 것에 대한 주장은 사용자 경험과 비용뿐만 아니라 우리가 살고있는 지구에 관한 것입니다. 데이터 사용은 전 세계 오염에 크게 기여하며, 불필요한 데이터 전송을 최소화하면 탄소 배출량에 큰 영향을 줄 수 있습니다.

기본적으로 패키지 브라우저에 몇 메가 바이트의 코드 팽창을 추가하기 위해 동일한 데이터가 하루에 수십억 번 불필요하게 전송되고 있습니다.

인터넷의 모든 사용자에 대한 사용자 경험이 악화됩니다. 그리고 주요 비즈니스에 막대한 비용이 소요됩니다.

개발자는 현재 IE 등에서 필요한대로 필요한 폴백을 만들면 문제가 무엇입니까? 확실히 포함되어야합니까?


1
이것은 질문에 대한 접선입니다. 문제는 "브라우저를 사용해야하는 이유"가 아니라 "브라우저를하지 않는 이유와 그에 대한 조치"입니다.
Stephen Ostermiller

OP는 프레임 워크가 이미 다른 사이트에서도 브라우저 캐시 내에 존재하는 경우 CDN에 대한 트래픽을 줄이는 데 관심이 있습니다. 개인적으로 프레임 워크를 참조하는 일반적인 방법이 없다면 어떻게 볼 수 없습니다.
closetnoc

대부분의 사람들은 질문에 대한 가장 적절한 답변을 말하지 못했으며 jQuery는 웹 표준이 아니며 브라우저는 느리게 변경되고 기본 사항을 기반으로하는 웹 표준 만 실행합니다. jQuery는 원래 브라우저간에 기본 기능이 일관되게 작동하도록 만들어 졌으므로 jQuery를 포함하는 것은 브라우저를 수정하는 패치를 포함하는 것과 비슷하지만 브라우저는 이미 자체적으로 수정됩니다. 이미 우리는 요즘 많은 "jQuery가 필요하지 않습니다"기사에 의해 부분적으로 입증 된 jQuery의 사용이 줄어드는 것을 봅니다.
Rob

스티븐 질문은 "브라우저를 사용하지 않는 이유는 무엇입니까?"가 아닙니다. 그게 당신의 해시입니다. 문제는 왜 그렇지 않느냐는 것입니다. 그리고 단순히 요구하는 사람은 단순히이 작업을 수행하고 발생하는 문제를 처리하기위한 새로운 프레임 워크를 만들면 실제로 모든 웹 사용자에게 큰 잠재적 이점이있을 것입니다.
Andy Bbop

당신은 모두 낡은 선입견을 방어하는 것을 멈추고 여전히 배울 수 있다는 것을 받아 들여야합니다. 아, 또한 실제로 무언가를 읽는 법을 배웁니다. # 무기. "OP는 귀사의 요점을 숙고하면서 CDN으로의 트래픽을 줄이는 데 관심이 있습니다." 그는 클라이언트 측이든 CDN이든 막대한 양의 대역폭을 절약 할 수 있다고 말했다. effing post를 읽으십시오.
Andy Bbop
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.