ทำไมเบราว์เซอร์ไม่ได้ติดตั้ง jQuery


19

ฉันใช้ jQuery ในเว็บไซต์หลายแห่งของฉันและถึงแม้ว่าฉันใช้ CDN เพื่อให้บริการ แต่ก็ไม่สมเหตุสมผลเลยที่ผู้เยี่ยมชมจะดาวน์โหลด jQuery ทุกครั้ง jQuery ต้องเป็นเฟรมเวิร์ก JavaScript ที่ใช้กันอย่างแพร่หลายมากที่สุดในโลก - จะไม่เหมาะสมกว่านี้หากเบราว์เซอร์เพิ่งติดตั้งตามค่าเริ่มต้น

ด้วยวิธีดังกล่าวหลายล้านครั้งต่อวันการดาวน์โหลด jQuery สามารถป้องกันได้ ไม่ว่าจะมาจากเว็บไซต์ของผู้คนหรือจาก CDN

ทั้งหมดที่จะต้องมีจริงๆคือถ้าคำสั่งเช่น:

 <!--[if jQuery gt 11]>

มีบางสิ่งที่จะช่วยป้องกันไม่ให้ผู้ใช้เดินทางไปที่ CDN หากพวกเขามี jQuery ในแคชของพวกเขาจากเว็บไซต์อื่นอยู่แล้ว?


3
คำถามคือ - ทำไมผู้ใช้จำเป็นต้องทำการดาวน์โหลดใหม่จากเว็บไซต์หรือ CDN สำหรับสิ่งที่เขามีอยู่แล้ว? jQuery ให้บริการจากหลายสถานที่และในหลาย ๆ รุ่น ฉันกังวลเกี่ยวกับความเร็วหน้าและผู้ใช้มีความกังวลเกี่ยวกับแบนด์วิดธ์ (โดยเฉพาะมือถือ) หากมีมาตรฐานทองคำสำหรับห้องสมุด - ทำไมไม่ใช้ล่ะ มีตัวอย่างอื่น ๆ ที่แน่นอนและฉันก็ยินดีต้อนรับผู้เหล่านั้นเช่นกัน - ตราบใดที่มีมาตรฐานที่ตกลงกันไว้สำหรับพวกเขา (เช่นหมายเลขรุ่น)
user1914292

27
ทำไม jQuery แต่ไม่ใช่เชิงมุม, MooTools, ขีดล่าง, ... ? แล้วเวอร์ชั่นไหนล่ะ? เบราว์เซอร์ควรมีสำเนาของทุกไลบรารี JavaScript ที่เคยทำหรือไม่?
253751

15
"ขออภัยคุณไม่สามารถใช้เว็บไซต์ของฉันได้จนกว่าคุณจะอัปเกรดเป็นเบราว์เซอร์เวอร์ชันที่สูงกว่า 0.1"
VLAZ


4
การแคชนั้นทำขึ้นเพื่อสิ่งนั้น มิฉะนั้นการจัดการเวอร์ชันจะเป็นไปไม่ได้โดยทั่วไป
njzk2

คำตอบ:


55

หากคุณให้บริการ jQuery จาก CDN ยอดนิยมเช่นHosted Librariesหรือcdnjsของ Google จะไม่สามารถดาวน์โหลดซ้ำได้หากผู้เข้าชมของคุณอยู่ในไซต์ที่อ้างอิงจากแหล่งเดียวกัน (ตราบใดที่เวอร์ชันแคชยังไม่หมดอายุ)

jQuery เป็นห้องสมุดยอดนิยมอย่างที่คุณพูด แต่การรวมเข้ากับเบราว์เซอร์นั้นไม่น่าจะเกิดขึ้นด้วยเหตุผลบางประการ:

  1. jQuery มีขนาดค่อนข้างเล็ก (เมื่อเทียบกับไลบรารีที่บางครั้งรวมอยู่ในเบราว์เซอร์เช่น Flash) คอขวดประสิทธิภาพที่ใหญ่ที่สุดในไซต์เฉลี่ยนั้นไม่น่าจะเกิดจากการดาวน์โหลด jQuery
  2. การปรับปรุง JavaScript / ECMAScript หมายความว่านักพัฒนาไม่จำเป็นต้องพึ่งพา jQuery มากขึ้น (ดูyoumightnotneedjquery.com )
  3. มีห้องสมุด JavaScript ยอดนิยมอื่น ๆ อีกมากมาย เบราว์เซอร์ไม่ได้ถูกออกแบบมาเป็นที่เก็บสำหรับรหัส JavaScript การติดตามความนิยมของสคริปต์การทิ้งไลบรารี่ที่ได้รับความนิยมน้อยลงและการทำให้ทุกอย่างเป็นปัจจุบันอาจดีที่สุดสำหรับนักพัฒนาเว็บของแต่ละไซต์

ฉันเข้าใจสิ่งนี้ แต่ตอนนี้ฉันกำลังใช้ code.jquery.com เป็น CDN อย่างไรก็ตามเมื่อเว็บไซต์อื่นใช้ googleapis หรือ cdjns เบราว์เซอร์จะดาวน์โหลด jQuery จาก CDN อื่น ๆ อีกครั้ง นั่นไม่สมเหตุสมผลและเสียเวลามาก / แบนด์วิดท์ทั่วสถานที่ หากคุณเพิ่มสิ่งนี้ในกรณีส่วนใหญ่คนจะต้องการอะไรเช่น jQuery1.7 + มันยิ่งแย่ลง ฉันเข้าใจประเด็นของคุณเกี่ยวกับเบราว์เซอร์ที่ไม่ได้เป็นที่เก็บข้อมูล แต่เราจะไม่สามารถสร้างกฎ 'แคชจากหลายแหล่งที่มา' ได้หรือไม่
user1914292

24
@ user1914292 สิ่งนี้จะมีประโยชน์ก็ต่อเมื่อเบราว์เซอร์ทั้งหมดมี jQuery ทุกเวอร์ชันที่เคยมีอยู่และถ้ามันขัดขวางการร้องขอใด ๆ ไปยังแหล่งที่รู้จักของ jQuery ให้แทนที่ด้วยเวอร์ชันแคช หากมีความแตกต่างเล็กน้อยก็อาจทำให้เกิดข้อบกพร่องที่เป็นไปไม่ได้ที่จะแก้ปัญหา สิ่งนี้ยิ่งทำให้แย่ลงไปอีกเนื่องจากความจริงที่ว่าการแคชเว็บใช้งานได้และทำงานมาหลายทศวรรษแล้ว เบราว์เซอร์ของคุณไม่ใช่สิ่งเดียวที่เก็บคำขอ jQuery เหล่านั้น - เราเตอร์จำนวนมากที่เดินทางไปยังเบราว์เซอร์ของคุณทำสิ่งเดียวกัน ปัญหาที่เกิดขึ้นได้รับการแก้ไขมานานแล้วเมื่อแบนด์วิดธ์ได้เรื่อง :)
Luaan

4) จะเกิดอะไรขึ้นถ้ารหัส jquery ในเว็บไซต์นั้น ๆ ขึ้นอยู่กับฟังก์ชั่นที่ได้รับการเปลี่ยนแปลงพื้นฐานในการอัปเดตล่าสุดและจะไม่ทำสิ่งที่รหัสคาดว่าจะทำอีกต่อไป?
Shadur

1
@ ไม่ได้มันไม่ได้เป็นกลไกการติดตามเพราะ 99% ของเวลาที่ได้รับการร้องขอจากแคชเบราว์เซอร์ของคุณ
suriv

1
@BenSteward ใช่ใช้เครื่องมือ dev เบราว์เซอร์ของคุณและตรวจสอบแผงเครือข่าย ตัวอย่างเช่น Chrome จะแสดงทรัพยากรที่เก็บไว้ด้วย "แคชดิสก์" หรือ "แคชหน่วยความจำ" ในคอลัมน์ "ขนาด" และค่าโกสต์ในคอลัมน์ "สถานะ" (ตราบใดที่คุณไม่มี "ปิดใช้งานแคช (ในขณะที่ DevTools) เปิดอยู่)” ทำงานในการตั้งค่าเครื่องมือ dev) มันสามารถขึ้นอยู่กับส่วนหัวของตัวควบคุมแคชและปัจจัยอื่น ๆ เกี่ยวกับสิ่งที่แคชและระยะเวลา developer.mozilla.org/en-US/docs/Web/HTTP/Caching
Nick

21

jQuery ไม่เพียง แต่เป็นไลบรารี JS ยอดนิยมเท่านั้นเบราว์เซอร์อาจต้องมีหลายเวอร์ชัน Google CDNรายการปัจจุบัน: 42 รุ่นของ jQuery; jQuery UI 44 เวอร์ชัน; jQuery Mobile 6 เวอร์ชัน

เป็นการดีกว่าที่จะอนุญาตให้นักพัฒนาเว็บกำหนดเวอร์ชันของไลบรารีที่จะดาวน์โหลดตามความต้องการของเว็บไซต์ หากคุณใช้ jQuery เวอร์ชันปัจจุบันบนเว็บไซต์ของคุณและโหลดจาก CDN ยอดนิยมแสดงว่ามีโอกาสดีที่ผู้เข้าชมของคุณจะมีแคชอยู่แล้ว


14

เบราว์เซอร์เป็นเครื่องมือที่ไม่ได้เป็นหน้าที่ของนักออกแบบเครื่องยนต์ในการค้นหาว่าคุณจะใส่น้ำมันเชื้อเพลิงและชิ้นส่วนพิเศษอะไรลงไปในรถของคุณ หากพวกเขาจะทำเบราว์เซอร์นี้จะเป็น bloatware ขนาดใหญ่เพราะคำถามต่อไปจะเป็น "ทำไมต้องเป็น jQuery" และเราจะต้องดูแลที่เก็บข้อมูลอ้างอิง

นอกจากนี้เราจะรวมทุกรุ่นด้วยหรือไม่ จะเกิดอะไรขึ้นถ้ามีคนต้องการใช้รุ่นที่กำหนดเอง ถ้าใครไม่อยากใช้ห้องสมุดนั่นล่ะ? พวกเขาจะรวมและม้วนการเผยแพร่ล่าสุดบ่อยแค่ไหน? เราจะจบลงด้วยเบราว์เซอร์ที่แตกต่างกันกับ jQuerys รุ่นที่แตกต่างกันหรือไม่ พวกเขาไม่สามารถใช้ฟังก์ชัน HTML, CSS และ JavaScript ที่เป็นมาตรฐานได้อย่างเท่าเทียมกัน จะเกิดอะไรขึ้นถ้าผู้ดูแลเบราว์เซอร์คนใดคนหนึ่งจะไม่รวมไลบรารีหรือเวอร์ชันที่เฉพาะเจาะจง

เบราว์เซอร์จัดเตรียมแบบเอกสารสำเร็จรูปและสภาพแวดล้อมสำหรับให้คุณสร้างไม่ใช่โซลูชันที่เสร็จสิ้นแล้ว

การใส่ jQuery ลงในเบราว์เซอร์จะไม่ทำให้เว็บไซต์ของคุณโหลดเร็วอย่างเห็นได้ชัดเพราะในปัจจุบันนี่ไม่ใช่คอขวดที่ใหญ่ที่สุดอย่างไรก็ตามเราสามารถยอมรับได้ว่า jQuery เป็นห้องสมุดขนาดใหญ่ที่ไม่มีความจำเป็น แต่จุดประสงค์ของมันก็คือ แบนด์วิดธ์) มีห้องสมุดอื่น ๆ อีกมากมายที่ได้รับการออกแบบมาโดยเฉพาะรอบ ๆ โหลดเร็วและให้มีน้ำหนักเบาเหมือนZepto

หากคุณกังวลเกี่ยวกับขนาดและการใช้แบนด์วิดท์ของ jQuery อย่าใช้มัน คุณเคยได้ยินเกี่ยวกับวานิลลา JSหรือไม่? มันเป็นห้องสมุดที่ได้รับความนิยมมากขึ้นที่ถูกนำมาใช้อย่างแท้จริงโดยเกือบทุกคนรวมทั้ง jQuery ตัวเอง! และมันเติมเต็มความฝันของคุณแล้วเพราะมันถูกรวมอยู่ในเบราว์เซอร์ทุกตัว!


2

เหตุผลที่ใช้ไลบรารีเช่น jQuery คือความเข้ากันได้

เบราว์เซอร์กลายเป็นมาตรฐานมากขึ้น แต่ด้วยการใช้ไลบรารี่ jquery คุณจะเป็นผู้จัดหาเองคุณไม่ต้องกังวลกับความแตกต่างระหว่างตระกูลเบราว์เซอร์และเวอร์ชัน

ด้วยการจัดหา jquery ด้วยตัวคุณเองคุณจะมั่นใจได้ว่ามี API ที่สอดคล้องกัน

หากเรามี jquery อยู่ในเบราว์เซอร์คุณต้องตรวจสอบเวอร์ชันที่ผู้ใช้มีอยู่และเราจะกลับไปที่เบราว์เซอร์ที่น่าสนใจและ "ไซต์นี้ดูได้ดีที่สุดใน ... "

ดังนั้นการสร้าง jquery ในเบราว์เซอร์จึงไม่สมเหตุสมผล

นอกจากนี้การแคชยังใช้งานได้ดังนั้นแม้ว่าผู้ใช้จะไม่ได้มีรุ่น jquery ของคุณก็จะต้องดาวน์โหลดเพียงครั้งเดียว


-3

ฉันคิดว่าผู้ตอบแบบสอบถามที่นี่ล้มเหลวที่จะเข้าใจว่าคำตอบสำหรับคำถามคือเบราว์เซอร์ที่น่าจะมีห้องสมุดที่ใช้กันอย่างแพร่หลายและโพลีฟิลส์ ฯลฯ ในฝั่งไคลเอ็นต์

ในฐานะบุคคลที่ถามคำถามเราสามารถใช้ความคิดเห็นแบบมีเงื่อนไขเพื่อให้แน่ใจว่าผู้ใช้เบราว์เซอร์ที่ไม่รวม jquery จึงได้รับเวอร์ชันที่เหมาะสม

Jquery ยังมีการรองรับความเข้ากันได้แบบย้อนหลังผ่านการโอนย้ายทำให้สามารถแสดงความคิดเห็นแบบมีเงื่อนไขเพื่อให้การสนับสนุนย้อนยุคสำหรับผู้ที่มีไลบรารี่รุ่นเก่าที่จัดทำแพคเกจโดยไม่ต้องดาวน์โหลดไลบรารีใหม่ทั้งหมด

อาร์กิวเมนต์สำหรับการรวมสิ่งเหล่านี้ในเบราว์เซอร์จะไม่เพียง แต่เกี่ยวกับประสบการณ์การใช้งานและค่าใช้จ่าย แต่ยังเกี่ยวกับโลกใบนี้ที่เราอาศัยอยู่ การใช้ข้อมูลเป็นส่วนช่วยอย่างมากต่อมลภาวะระดับโลกและทำให้มั่นใจได้ว่าการถ่ายโอนข้อมูลที่ไม่จำเป็นจะลดลงอาจส่งผลอย่างมากต่อการปล่อยก๊าซคาร์บอนไดออกไซด์ของเรา

โดยพื้นฐานแล้วเพื่อเพิ่มโค้ดเพิ่มเติมอีกสองสามเมกะไบต์ในเบราว์เซอร์ที่จัดทำแพคเกจ - ข้อมูลเดียวกันนั้นกำลังถูกนำไปใช้ซ้ำโดยไม่จำเป็นเกี่ยวกับพันล้านครั้งต่อวัน

นั่นจะทำให้ประสบการณ์ของผู้ใช้แย่ลงสำหรับทุกคนบนอินเทอร์เน็ต และค่าใช้จ่ายธุรกิจใหญ่ ๆ เงินจำนวนมหาศาล

ในฐานะนักพัฒนาคุณจะต้องสร้างทางเลือกที่จำเป็นตามที่เราทำกับ IE ในปัจจุบันดังนั้นปัญหาคืออะไร - มันควรจะรวมอยู่ด้วยหรือไม่


1
นี่เป็นคำถามสำหรับคำถามวงใน คำถามคือ "ทำไมไม่เบราว์เซอร์และฉันจะทำอย่างไรกับมัน" ไม่ใช่ "ทำไมต้องเบราว์เซอร์"
Stephen Ostermiller

OP ในขณะที่ไตร่ตรองประเด็นของคุณมีความสนใจในการลดทราฟฟิกลงใน CDN ถ้าเฟรมเวิร์กมีอยู่แล้วภายในแคชเบราว์เซอร์ที่อาจเกิดขึ้นได้จากไซต์อื่น โดยส่วนตัวแล้วฉันไม่สามารถเห็นได้ว่าจะมีวิธีการอ้างอิงกรอบงานร่วมกันได้อย่างไร
Closnoc

คนส่วนใหญ่ล้มเหลวในการพูดคำตอบที่เกี่ยวข้องกับคำถามมากที่สุดและนั่นคือ jQuery ไม่ใช่เว็บมาตรฐานและเบราว์เซอร์จะเรียกใช้มาตรฐานเว็บเท่านั้นที่เปลี่ยนช้าและอยู่บนพื้นฐานพื้นฐาน jQuery ถูกสร้างขึ้นเพื่อให้พื้นฐานทำงานได้อย่างต่อเนื่องระหว่างเบราว์เซอร์ดังนั้นการรวม jQuery จึงเหมือนกับการรวมโปรแกรมปะแก้เบราว์เซอร์ แต่เบราว์เซอร์แก้ไขตัวเองแล้วในที่สุด เราเห็นแล้วว่าการใช้ jQuery ลดน้อยลงเป็นหลักฐานบางส่วนจากบทความ "คุณไม่ต้องการ jQuery" ในปัจจุบัน
Rob

สตีเฟ่น quesiton ไม่ได้เป็น "ทำไมไม่เบราว์เซอร์และสิ่งที่ฉันจะทำอย่างไรกับมัน" นั่นคือรูปแบบใหม่ของคุณ คำถามคือทำไมพวกเขาถึงไม่ทำอย่างนั้นและคนที่ถามอย่างชัดเจนว่าเพียงแค่ทำสิ่งนี้และสร้างกรอบการทำงานใหม่สำหรับการจัดการกับปัญหาที่เกิดขึ้นจริง ๆ แล้วจะมีประโยชน์อย่างมากต่อผู้ใช้เว็บทั้งหมด
Andy Bbop

คุณทุกคนต้องหยุดการป้องกัน preconceptions ที่ล้าสมัยและยอมรับว่าคุณยังคงสามารถเรียนรู้ได้ โอ้และเรียนรู้ที่จะอ่านอะไรบางอย่างจริงๆ #Weapons "OP ในขณะที่ไตร่ตรองประเด็นของคุณสนใจที่จะลดทราฟฟิกลง CDN" ไม่เขาบอกว่ามันสามารถบันทึกแบนด์วิดธ์จำนวนมากไม่ว่าจะที่ฝั่งไคลเอ็นต์หรือ CDN อ่านโพสต์ไหล
Andy Bbop
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.