คุณรวมไลบรารี jQuery ไว้ที่ไหน Google JSAPI CDN?


242

มีหลายวิธีในการรวม jQuery และ jQuery UI และฉันสงสัยว่าผู้คนใช้อะไรอยู่

  • Google JSAPI
  • เว็บไซต์ของ jQuery
  • เว็บไซต์ / เซิร์ฟเวอร์ของคุณเอง
  • CDN อื่น

ฉันเพิ่งใช้ Google JSAPI เมื่อเร็ว ๆ นี้ แต่พบว่าใช้เวลานานในการตั้งค่าการเชื่อมต่อ SSL หรือแม้แต่การแก้ไข google.com เท่านั้น ฉันใช้สิ่งต่อไปนี้กับ Google:

<script src="https://www.google.com/jsapi"></script>
<script>
google.load('jquery', '1.3.1');
</script>

ฉันชอบแนวคิดของการใช้ Google ดังนั้นจึงเป็นแคชเมื่อเยี่ยมชมเว็บไซต์อื่น ๆ และเพื่อประหยัดแบนด์วิดธ์จากเซิร์ฟเวอร์ของเรา แต่ถ้ามันเป็นส่วนที่ช้าของเว็บไซต์ฉันอาจเปลี่ยนการรวม

คุณใช้อะไร คุณเคยมีปัญหาอะไรบ้าง?

แก้ไข:เพิ่งเยี่ยมชมเว็บไซต์ของ jQuery และพวกเขาใช้วิธีการดังต่อไปนี้:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

แก้ไข 2:นี่คือวิธีที่ฉันได้รวม jQuery โดยไม่มีปัญหาสำหรับปีที่แล้ว:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>

http:ความแตกต่างคือการกำจัดของ ด้วยการลบสิ่งนี้คุณไม่ต้องกังวลเกี่ยวกับการสลับระหว่าง http และ https


8
ดาร์ริลการแก้ไขที่ยอดเยี่ยม ฉันขอแนะนำให้คุณย้ายการแก้ไขของคุณไปด้านบนสุดของหน้าและเปลี่ยนเป็นsrcไวยากรณ์ที่ง่ายขึ้น / ปลอดภัย / เร็วขึ้นที่คุณใช้ตอนนี้หรือไม่ คำตอบของคุณเป็นที่ยอมรับโดยทั่วไปและการเปลี่ยนแปลงทั้งสองจะช่วยให้ผู้คนได้รับสิ่งที่พวกเขามาอย่างรวดเร็ว
Josh Smith

คำตอบ:


153

ฉันเลือก JQuery ที่เสิร์ฟโดยเซิร์ฟเวอร์ Google API อย่างไม่ต้องสงสัย ฉันไม่ได้ไปด้วยวิธี jsapi เนื่องจากฉันไม่ใช้ประโยชน์จาก Google API อื่น ๆ แต่ถ้ามันเปลี่ยนไปฉันก็จะพิจารณา ...

ข้อแรก:เซิร์ฟเวอร์ Google api กระจายอยู่ทั่วโลกแทนที่จะเป็นที่ตั้งเซิร์ฟเวอร์เดียวของฉัน: โดยปกติแล้วเซิร์ฟเวอร์ที่ใกล้ชิดจะหมายถึงเวลาตอบสนองที่รวดเร็วกว่าสำหรับผู้เข้าชม

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

ประการที่สาม:บริษัท เว็บโฮสติ้งของฉันเรียกเก็บเงินจากฉันสำหรับแบนด์วิดท์ที่ใช้ ไม่รู้สึกสิ้นเปลือง 18k ต่อเซสชันผู้ใช้หากผู้เข้าชมสามารถรับไฟล์เดียวกันที่อื่น

ฉันเข้าใจว่าฉันให้ความไว้วางใจกับ Google ในการให้บริการไฟล์สคริปต์ที่ถูกต้องและออนไลน์และพร้อมให้ใช้งาน จนถึงตอนนี้ฉันยังไม่ผิดหวังกับการใช้ Google และจะดำเนินการตั้งค่าต่อไปจนกว่าจะไม่เหมาะสม

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

นี่คือสิ่งที่ฉันมาด้วย:

<script type="text/javascript">
    document.write([
        "\<script src='",
        ("https:" == document.location.protocol) ? "https://" : "http://",
        "ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js' type='text/javascript'>\<\/script>" 
    ].join(''));
</script>

UPDATE 9/8/2010 - มีการให้คำแนะนำเพื่อลดความซับซ้อนของรหัสโดยการลบ HTTP และ HTTPS และใช้ไวยากรณ์ต่อไปนี้:

<script type="text/javascript">
    document.write("\<script src='//ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js' type='text/javascript'>\<\/script>");
</script>

นอกจากนี้คุณยังสามารถเปลี่ยน url เพื่อให้เป็นไปตามหมายเลขหลัก jQuery หากคุณต้องการตรวจสอบให้แน่ใจว่ามีการโหลด jQuery รุ่น Major Major ล่าสุด:

<script type="text/javascript">
    document.write("\<script src='//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'>\<\/script>");
</script>

สุดท้ายหากคุณไม่ต้องการใช้ Google และต้องการ jQuery คุณสามารถใช้เส้นทางของแหล่งข้อมูลต่อไปนี้ (โปรดทราบว่า jQuery ไม่รองรับการเชื่อมต่อ SSL):

<script type="text/javascript">
    document.write("\<script src='http://code.jquery.com/jquery-latest.min.js' type='text/javascript'>\<\/script>");
</script>

26
ฉันเห็นด้วยกับทั้งสามเหตุผลของคุณซึ่งเป็นเหตุผลที่ฉันรวม jquery จาก Google ในเว็บไซต์ผลิตของฉัน แทนการฉีดแบบไดนามิก js สำหรับหน้า SSL ฉันเพียงแค่อ้างอิง url ในแท็กสคริปต์โดยไม่ต้องระบุโปรโตคอล ดูเหมือนว่าจะทำงานได้ดีสำหรับฉัน <script src = "// ajax.google ... "> </script>
Aaron Wagner

1
แนวคิดที่น่าสนใจ ... แต่ถ้าคุณจะใช้ DNS เป็นพิษเพื่อจี้ JQuery โหลดทำไมไม่เพียงแค่จี้ไซต์ทั้งหมด? หรือวิธีการเกี่ยวกับสคริปต์ Google Analytics
Dscoduc

9
ฉันเห็นด้วยกับทุกสิ่งยกเว้นเพื่อทำให้สิ่งต่าง ๆ เรียบง่ายฉันใช้รูปแบบนี้: <script src = "// ajax.google ... "> </script> ถ้าอย่างนั้นฉันก็ไม่ต้องกังวลเกี่ยวกับ http หรือ https ขอบคุณ Aaron Wagner สำหรับสิ่งนั้น
Darryl Hein

11
ฉันไม่เห็นสิ่งที่document.write()กำลังใช้งานอยู่? ง่าย ๆ<script src="..."></script>ก็คือการวางในส่วนหัว → @ Dscoduc: ←มันจะไม่เร็วกว่านี้มันแค่ลบข้อความเตือนออกไป หากไซต์ของคุณใช้ https ที่ปลอดภัยและคุณกำลังดึงเนื้อหาที่ไม่ได้เข้ารหัส (เช่นhttp://googleapis) คุณจะได้รับข้อความเตือน สิ่งที่จะเร็วขึ้นเล็กน้อยถ้าคุณใช้ http เท่านั้น แต่คุณเชื่อมโยงไปถึงจะhttps://googleapisมีค่าใช้จ่ายเล็กน้อยด้วยการเข้ารหัส "ปลอดภัย" ดังนั้นการลิงก์ไปยังhttp://googleapisจะเร็วขึ้นเล็กน้อย
vol7ron

5
โปรดทราบว่า Google จะใช้สิ่งนี้เพื่อติดตามเว็บไซต์ที่ผู้ใช้ไป ดังนั้นหากคุณกำลังสร้างเว็บไซต์ที่จำเป็นต้องคำนึงถึงความเป็นส่วนตัวแล้วการโฮสต์ไฟล์ขนาดเล็กสองไฟล์เป็นราคาขนาดเล็กที่ต้องจ่ายเพื่อความเป็นส่วนตัว
Hans-Christoph Steiner

19

เหตุผลหนึ่งที่คุณอาจต้องการโฮสต์บนเซิร์ฟเวอร์ภายนอกคือการหลีกเลี่ยงข้อ จำกัด ของเบราว์เซอร์ของการเชื่อมต่อที่สอดคล้องกับเซิร์ฟเวอร์เฉพาะ

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

เหตุผลที่สองเพื่อโฮสต์ไว้บนเซิร์ฟเวอร์ภายนอกคือลดทราฟฟิกไปยังเซิร์ฟเวอร์ของคุณเอง

อย่างไรก็ตามด้วยขนาดของ jQuery โอกาสที่จะเป็นส่วนเล็ก ๆ ของการเข้าชมของคุณ คุณควรพยายามเพิ่มประสิทธิภาพเนื้อหาจริงของคุณ


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

14

jQuery 1.3.1 นาทีมีขนาดเพียง 18k ฉันไม่คิดว่ามันเป็นเรื่องฮิตที่จะถามในการโหลดหน้าแรก มันจะถูกแคชหลังจากนั้น เป็นผลให้ฉันเป็นเจ้าภาพตัวเอง


7
ฉันไม่เห็นด้วยอย่างสุภาพตามเหตุผลที่คุณระบุ หากคุณได้รับการเข้าชมจำนวนมากดังนั้น 18k ต่อเซสชันสามารถเพิ่มจำนวนการรับส่งข้อมูลได้อย่างรวดเร็ว โดยเฉพาะอย่างยิ่งถ้าเว็บโฮสติ้งโดยค่าใช้จ่ายที่ใช้แบนด์วิดธ์ ...
Dscoduc

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

2
เว้นแต่เว็บไซต์ของคุณจะเล็กมาก ๆ 18k จะเป็นเพียงส่วนเล็กน้อยของการเข้าชมของคุณ
Hans-Christoph Steiner

14

หากคุณต้องการใช้ Google ลิงก์โดยตรงอาจตอบสนองได้มากกว่า แต่ละไลบรารีมีพา ธ ที่ระบุไว้สำหรับไฟล์โดยตรง นี่คือเส้นทาง jQuery

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>

เพียงอ่านคำถามของคุณใหม่มีเหตุผลที่คุณใช้ https หรือไม่ นี่คือแท็กสคริปต์ที่ Google แสดงไว้ในตัวอย่าง

<script src="http://www.google.com/jsapi"></script>

3
การใช้ HTTPS เนื่องจากไซต์นั้นเป็น HTTPS ดังนั้นต้องมี
Darryl Hein

1
เนื้อหาทั้งหมดของคุณเป็นแบบ https หรือบางส่วนเท่านั้น
Dscoduc

2
ลิงก์ http บนเว็บไซต์ https นั้นน่ารำคาญเพราะ IE (อย่างน้อยโดยค่าเริ่มต้น) ทำให้คุณรำคาญด้วย "ไซต์นี้มีเนื้อหาที่ปลอดภัยและไม่ปลอดภัยผสมกัน" กล่องยืนยัน
cletus

1
เว็บไซต์ที่มีรหัสมานั้นเป็น SSL อย่างสมบูรณ์ - ข้อมูลการติดต่อที่ปลอดภัยอย่างยิ่ง
Darryl Hein

1
หากคุณใส่ใจเกี่ยวกับความปลอดภัยของผู้ใช้ให้ใช้ HTTPS สำหรับ javascript เสมอ หากไม่มี HTTPS มันค่อนข้างง่ายที่จะส่งคำขอไปยังคนที่อยู่ตรงกลาง (MITM) และใช้ประโยชน์จากช่องโหว่ที่อยู่ด้านข้างจาวาสคริปต์ที่คุณตั้งใจจะส่งถึงผู้คน คิดว่า wifi สาธารณะ, เราเตอร์ที่ถูกแฮ็กที่บ้าน ฯลฯ ตามที่ตั้งของ MITM ดูการแข่งขัน pwn-to-own เหล่านั้น: พวกเขาใช้เบราว์เซอร์เพื่อเข้าไปข้างในเสมอ
Hans-Christoph Steiner

8

ฉันไม่ต้องการไซต์สาธารณะใด ๆ ที่ฉันพัฒนาขึ้นเพื่อพึ่งพาไซต์ภายนอกใด ๆ ดังนั้นฉันจะโฮสต์ jQuery ด้วยตัวเอง

คุณเต็มใจที่จะหยุดทำงานในเว็บไซต์ของคุณหรือไม่ (Google, jquery.com และอื่น ๆ ) หยุดทำงาน การพึ่งพาน้อยลงเป็นกุญแจสำคัญ


2
ฉันใส่ประสบการณ์ผู้ใช้ (เวลาโหลดเร็ว) ที่นั่นด้วยการพึ่งพาน้อย
Dscoduc

1
@slacy เฮ้เว็บไซต์ของคุณไม่ทำงาน! จริง ๆ แล้ว jk แต่ฉันสังเกตว่าคุณกำลังใช้ Google Analytics และมีสคริปต์ของพวกเขาในตอนต้นแทนที่จะจบ - ซึ่งจะทำให้เว็บไซต์ของคุณช้าลงเล็กน้อยหาก google นั้นช้า
Simon_Weaver

3
hmm ... slacy ใช้ Google Analytics อยู่หรือ เขาไม่เพียงแค่บอกว่าเขาไม่ต้องการไซต์สาธารณะใด ๆ ที่เขาพัฒนาเพื่อพึ่งพาเว็บไซต์ภายนอกหรือไม่? ;-)
Dscoduc

1
ว้าวเป็ดความคิดเห็นที่รุนแรงบางอย่างที่นั่น :) ใช่ฉันใช้ Analytics ในบล็อกส่วนตัวของฉัน แต่นั่นไม่ใช่ไซต์การผลิตที่สร้างรายได้ดังนั้นฉันคิดว่ามันใช้ได้จริง ฉันแน่ใจว่าไซต์ของฉันหยุดทำงานหลายวันต่อปี โปรดจำไว้ว่าสิ่งที่คุณทำกับไซต์ส่วนบุคคลและสำหรับการทำงานนั้นไม่เหมือนกัน
slacy

6
มีเหตุผลที่ดีอีกประการในการใช้สำเนาในท้องถิ่น: Google ถูกบล็อกบ่อยครั้งในหลายประเทศเช่นอิหร่านจีน ฯลฯ ดังนั้นนั่นหมายความว่าผู้คนกว่าพันล้านคนจะไม่สามารถเข้าถึงได้
Hans-Christoph Steiner

6

ข้อดี: โฮสต์บน Google มีประโยชน์

  • อาจจะเร็วกว่า (เซิร์ฟเวอร์ของพวกเขาจะได้รับการปรับให้เหมาะสมยิ่งขึ้น)
  • พวกเขาจัดการกับแคชอย่างถูกต้อง - 1 ปี (เราพยายามที่จะอนุญาตให้ทำการเปลี่ยนแปลงเพื่อให้ได้ส่วนหัวบนเซิร์ฟเวอร์ของเรา)
  • ผู้ใช้ที่มีลิงก์ไปยังเวอร์ชันที่โฮสต์โดย Google บนโดเมนอื่นมีไฟล์อยู่ในแคชแล้ว

จุดด้อย:

  • เบราว์เซอร์บางตัวอาจเห็นว่าเป็น XSS cross-domain และไม่อนุญาตให้ใช้ไฟล์
  • ผู้ใช้ที่เรียกใช้ปลั๊กอิน NoScript สำหรับ Firefox โดยเฉพาะ

ฉันสงสัยว่าคุณสามารถรวมจาก Google แล้วตรวจสอบการปรากฏตัวของตัวแปรทั่วโลกหรือไม่และถ้าไม่มีโหลดจากเซิร์ฟเวอร์ของคุณ?


3
มันเป็นข้อเสียของ Firefox ไม่ใช่ของ Google
,.

6

มีปัญหาเล็กน้อยที่นี่ ประการแรกวิธีการโหลด async ที่คุณระบุ:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load('jquery', '1.3.1');
  google.setOnLoadCallback(function() {
    // do stuff
  });
</script>

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

วิธีอื่นคือ:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>

ลองตัวอย่างง่ายๆเช่นมีตารางอย่างง่ายและเปลี่ยนพื้นหลังของเซลล์เป็นสีเหลืองด้วยเมธอด setOnLoadCallback () เทียบกับ $ (เอกสาร). ready () พร้อมโหลด jquery.min.js แบบคงที่ วิธีที่สองจะไม่มีการสั่นไหวที่เห็นได้ชัดเจน ความประสงค์แรก โดยส่วนตัวฉันคิดว่านั่นไม่ใช่ประสบการณ์การใช้งานที่ดี

ตัวอย่างการรันสิ่งนี้:

<html>
<head>
  <title>Layout</title>
  <style type="text/css">
    .odd { background-color: yellow; }
  </style>
</head>
<body>
<table>
  <tr><th>One</th><th>Two</th></tr>
  <tr><td>Three</td><td>Four</td></tr>
  <tr><td>Five</td><td>Six</td></tr>
  <tr><td>Seven</td><td>Nine</td></tr>
  <tr><td>Nine</td><td>Ten</td></tr>
</table> 
<script src="http://www.google.com/jsapi"></script>
<script>
  google.load("jquery", "1.3.1");
  google.setOnLoadCallback(function() {
    $(function() {
      $("tr:odd").addClass("odd");
    });
  });
</script>
</body>
</html>

คุณ (ควร) เห็นตารางปรากฏขึ้นจากนั้นแถวจะเป็นสีเหลือง

ปัญหาที่สองกับเมธอด google.load () คือโฮสต์ไฟล์ในวง จำกัด ปัญหานี้เป็นปัญหาสำหรับ jquery เนื่องจากขึ้นอยู่กับปลั๊กอินอย่างมาก หากคุณลองและรวมปลั๊กอิน jquery ด้วย<script src="...">แท็กและgoogle.load()ปลั๊กอินอาจล้มเหลวด้วยข้อความ "jQuery ไม่ได้ถูกกำหนด" เพราะยังไม่ได้โหลด ฉันไม่เห็นวิธีแก้ไขปัญหานี้

ปัญหาที่สาม (ด้วยวิธีการอย่างใดอย่างหนึ่ง) คือพวกเขาเป็นหนึ่งภาระภายนอก สมมติว่าคุณมีปลั๊กอินและรหัสจาวาสคริปต์ของคุณเองคุณมีคำขอภายนอกอย่างน้อยสองคำขอเพื่อโหลด Javascript ของคุณ คุณน่าจะดีกว่าที่จะได้รับ jquery ปลั๊กอินที่เกี่ยวข้องทั้งหมดและรหัสของคุณและวางลงในไฟล์ที่ย่อเล็กสุดหนึ่งไฟล์

จากอาแจ็กซ์ห้องสมุด API คุณควรใช้ Google สำหรับ Hosting? :

ในการโหลดครั้งคุณกำลังโหลดสองสคริปต์ - สคริปต์ jsapi และสคริปต์ mootools (เวอร์ชันบีบอัดจากด้านบน) นั่นคือการเชื่อมต่อสองจุดแทนที่จะเป็นหนึ่งจุด จากประสบการณ์ของฉันฉันพบว่าความเร็วในการโหลดนั้นช้ากว่าการโหลดจากเซิร์ฟเวอร์ที่ใช้ร่วมกันส่วนตัวของฉัน 2-3 เท่าแม้ว่าจะมาจาก Google และไฟล์บีบอัดเวอร์ชันของฉันนั้นใหญ่กว่า K ของ Google เล็กน้อย สิ่งนี้แม้หลังจากโหลดไฟล์และ (น่าจะเป็น) แคช ดังนั้นสำหรับฉันเนื่องจากแบนด์วิดท์ไม่สำคัญมากนัก

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

ดังนั้นในที่สุดฉันก็ไม่เห็นฉันใช้ Google AJAX API สำหรับ jQuery อย่างน้อย (API ที่ "สมบูรณ์" มากกว่านั้นเป็นเรื่องที่แตกต่างกันในบางวิธี) มากยกเว้นการโพสต์ตัวอย่างที่นี่


ฉันไม่พบปัญหาใด ๆ ที่คุณพูดถึง เพียงแค่โหลดสิ่งต่าง ๆ ในลำดับที่ถูกต้องจะช่วยแก้ไขทุกสิ่งได้มากเท่าที่ฉันเข้าใจ
Darryl Hein

4

นอกเหนือจากผู้ที่แนะนำให้โฮสต์บนเซิร์ฟเวอร์ของตัวเองแล้วฉันขอเสนอให้เก็บไว้ในโดเมนแยกต่างหาก (เช่น static.website.com) เพื่ออนุญาตให้เบราว์เซอร์โหลดลงในแยกจากเธรดเนื้อหาอื่น ๆ เคล็ดลับนี้ใช้ได้กับทุกสิ่งคงที่เช่นภาพและ css


4

ฉันต้องลงคะแนน -1 สำหรับห้องสมุดที่โฮสต์บน Google พวกเขากำลังรวบรวมข้อมูลรูปแบบการวิเคราะห์ของ Google พร้อมที่ล้อมรอบไลบรารีเหล่านี้ อย่างน้อยที่สุดฉันไม่ต้องการให้เบราว์เซอร์ไคลเอนต์ทำอะไรได้มากกว่าที่ฉันขอให้ทำ ที่แย่กว่านั้นคือ "เวอร์ชั่นใหม่" ของ Google ที่ไม่เป็นความชั่วร้ายโดยใช้จาวาสคริปต์ที่ไม่สร้างความรำคาญเพื่อรวบรวมข้อมูลการใช้งานเพิ่มเติม

หมายเหตุ: หากพวกเขาเปลี่ยนแนวปฏิบัตินี้สุดยอด แต่ครั้งสุดท้ายที่ฉันพิจารณาใช้ไลบรารีที่โฮสต์ของพวกเขาฉันตรวจสอบปริมาณการใช้งาน http ขาออกบนเว็บไซต์ของฉันและการโทรออกเป็นระยะ ๆ ไปยังเซิร์ฟเวอร์ google ไม่ใช่สิ่งที่ฉันคาดว่าจะเห็น


แต่คุณกำลังใช้งาน Google Analytics บนเว็บไซต์ของคุณอยู่หรือไม่? ตั้งแต่ผมผมไม่คิดว่ามันจะทำให้แตกต่างกันมากไม่ว่าจะเป็น JQuery มาจาก Google หรือไม่พวกเขาอาจจะรู้อยู่แล้วว่าฉันกำลังทำงานบนเว็บไซต์ของฉัน ...
Dscoduc

แต่แคชสำหรับ 1 ปี - เรายังส่ง 304 "ไฟล์ที่เปลี่ยนแปลง" ไปยัง Google ในระหว่างนี้หรือไม่?
Kristen

ใช่ฉันเห็นการโทรกลับเป็นระยะเหล่านั้นไปยัง Google ด้วย (ผู้จัดการกิจกรรมของ Safari มีรายการที่ดี)
Darryl Hein

Dscoduc - yep โดยใช้ Analytics อย่างน้อยในการติดตั้งใช้งานนั้นฉันเข้าใจก่อนเวลาที่ฉันเลิกใช้ข้อมูล ไม่เช่นนั้นกับ JS libs
jro

3

ฉันอาจเป็นโรงเรียนเก่าเกี่ยวกับเรื่องนี้ แต่ฉันยังขมวดคิ้วในการเชื่อมโยง บางที Google อาจเป็นข้อยกเว้น แต่โดยทั่วไปแล้วมันเป็นแค่มารยาทที่ดีในการโฮสต์ไฟล์บนเซิร์ฟเวอร์ของคุณเอง


3
"มารยาทที่ดี" คุณหมายถึงอะไร Google สนับสนุนให้คุณเชื่อมโยงไปยังเซิร์ฟเวอร์ของพวกเขา มันถูกสูบออกโดยโครงสร้างพื้นฐานที่น่าทึ่งของ Google
Nosredna

2
มีความสับสนอย่างแน่นอนในตอนแรกเมื่อคุณได้ยินเกี่ยวกับการใช้ google แต่เป็น nosredna บอกว่ามันจะได้รับการสนับสนุน "เราเอาความเจ็บปวดออกของพื้นที่ห้องสมุดได้อย่างถูกต้องตั้งค่าส่วนหัวของแคชอยู่ถึงวันที่มีมากที่สุดแก้ไขข้อผิดพลาดที่ผ่านมา ฯลฯ" - code.google.com/apis/ajaxlibs
Simon_Weaver

3

ฉันจะเพิ่มสิ่งนี้เป็นเหตุผลในการโฮสต์ไฟล์เหล่านี้ในเครื่อง

เมื่อเร็ว ๆ นี้โหนดใน Southern California บน TWC ไม่สามารถแก้ไขโดเมน ajax.googleapis.com (สำหรับผู้ใช้ที่มี IPv4) เท่านั้นดังนั้นเราจึงไม่ได้รับไฟล์ภายนอก สิ่งนี้ไม่ต่อเนื่องจนกระทั่งเมื่อวาน (ตอนนี้มันทนไม่ได้) เพราะมันไม่ต่อเนื่องฉันจึงมีปัญหามากมายในการแก้ไขปัญหาผู้ใช้ SaaS ใช้เวลานับไม่ถ้วนในการพยายามติดตามสาเหตุที่ผู้ใช้บางคนไม่มีปัญหากับซอฟต์แวร์และคนอื่น ๆ กำลังแท็งก์ ในกระบวนการแก้จุดบกพร่องตามปกติของฉันฉันไม่ได้ติดนิสัยที่จะถามผู้ใช้ว่าพวกเขาปิด IPv6 หรือไม่

ฉันสะดุดปัญหานี้เพราะตัวฉันเองใช้ "เส้นทาง" นี้ไปยังไฟล์และยังใช้เฉพาะ IPV4 เท่านั้น ฉันค้นพบปัญหากับเครื่องมือของนักพัฒนาซอฟต์แวร์ที่บอกฉันว่า jquery ไม่ได้โหลดจากนั้นเริ่มทำ traceroutes ฯลฯ ... เพื่อค้นหาปัญหาจริง

หลังจากนี้ฉันจะไม่กลับไปที่ไฟล์โฮสต์ภายนอกเพราะ: google ไม่ต้องลงเพื่อให้เป็นปัญหาและ ... หนึ่งในโหนดเหล่านี้สามารถถูกบุกรุกด้วย DNS hijacking และส่ง js ที่เป็นอันตราย แทนไฟล์จริง คิดเสมอว่าฉันปลอดภัยที่โดเมน google จะไม่ลงไปตอนนี้ฉันรู้ว่าโหนดใด ๆ ที่อยู่ระหว่างผู้ใช้และโฮสต์อาจเป็นจุดที่ล้มเหลว


2

ฉันเพิ่งรวมรุ่นล่าสุดจากเว็บไซต์ jQuery: http://code.jquery.com/jquery-latest.pack.js มันเหมาะกับความต้องการของฉันและฉันไม่ต้องกังวลเกี่ยวกับการอัปเดต

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


1
ฉันพบว่าวิธีการนั้นค่อนข้างอันตรายหากการเปลี่ยนรหัสในห้องสมุดทำให้ไซต์ของคุณแตกหัก หรือไซต์ jquery ดับลง ฉันต้องการควบคุมไฟล์อย่างสมบูรณ์
Jason Miesionczek

1
นอกจากนี้ฉันเกลียดที่จะใช้แบนด์วิดท์ของ jQuery folks เช่นนี้ พวกเขามีเครื่องมือฟรีที่ยอดเยี่ยมอยู่แล้วและฉันเกลียดที่พวกเขาต้องลงเพราะต้นทุนแบนด์วิดท์ ดีกว่าที่จะใช้ Google เป็นแหล่งข้อมูลภายนอกของคุณถ้าคุณไม่ต้องการโฮสต์ด้วยตัวเองเนื่องจากพวกเขากำลังจัดหาให้เพื่อวัตถุประสงค์นั้น
nezroy

ฉันอยากจะแนะนำให้เปลี่ยนไปใช้ Google แทน JQuery เหตุผลหลักคือ Google น่าจะมีเซิร์ฟเวอร์จำนวนมากทั่วโลกมากกว่า JQuery และจากประสบการณ์ของฉันมีผู้ใช้ Google โฮสติ้งเพิ่มขึ้นซึ่งเพิ่มโอกาสของคุณที่พวกเขามีแคชอยู่แล้ว
Dscoduc

ฉันเห็นด้วยกับเจสันการเปลี่ยนเป็นเวอร์ชั่นใหม่โดยอัตโนมัตินั้นอันตรายมาก อาจจะไม่มากถ้าคุณใช้ jquery เท่านั้น แต่ด้วยปลั๊กอินฉันไม่แนะนำอย่างแน่นอน ฉันหนึ่งใช้ปลั๊กอินในเว็บไซต์หนึ่งที่ทำงานร่วมกับ 1.2.6 แต่ไม่ 1.3.x (ยัง ... )
Jeroen

2

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

รูปแบบเก่า: http://ajax.microsoft.com/ajax/jQuery/jquery-1.5.1.js รูปแบบใหม่: http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.js

สิ่งนี้ไม่ควรส่งคุกกี้ทั้งหมดสำหรับ microsoft.com http://www.asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_from_the_CDN_11

นี่คือสถิติบางอย่างเกี่ยวกับเทคโนโลยีที่นิยมใช้บนเว็บในทุกเทคโนโลยี http://trends.builtwith.com/

หวังว่าจะช่วยให้คุณเลือก


1

หากฉันรับผิดชอบไซต์ 'สด' ฉันควรตระหนักถึงทุกสิ่งที่เกิดขึ้นและเข้าสู่ไซต์ของฉัน ด้วยเหตุนี้ฉันจึงโฮสต์ jquery-min เวอร์ชั่นเองบนเซิร์ฟเวอร์เดียวกันหรือเซิร์ฟเวอร์แบบสแตติก / ภายนอก แต่ไม่ว่าจะเป็นตำแหน่งที่ฉัน (หรือโปรแกรม / พร็อกซี / พร็อกซี) สามารถอัปเดตไลบรารีหลังจากตรวจสอบ / ทดสอบทุกการเปลี่ยนแปลงแล้ว


ฉันหวังว่า Google จะไม่เปลี่ยนแปลงไฟล์ - สำหรับการแก้ไขข้อบกพร่องพวกเขาจะโฮสต์ไฟล์ใหม่โดยมีหมายเลขเวอร์ชันแตกต่างกันในชื่อไฟล์ หรือว่าฉันไร้เดียงสา? พวกเขาจะเปิดตัว "การแก้ไขเล็กน้อย" โดยใช้ชื่อไฟล์เดียวกันหรือไม่?
Kristen

Google ไม่ควรเปลี่ยนแปลงไฟล์หากคุณขอรุ่นที่เฉพาะเจาะจง
Darryl Hein

1

ในหัว:

  (function() {
    var jsapi = document.createElement('script'); jsapi.type = 'text/javascript'; jsapi.async = true;
    jsapi.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'www.google.com/jsapi?key=YOUR KEY';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('head')[0]).appendChild(jsapi);
  })();

จุดจบของร่างกาย:

<script type="text/javascript">
google.load("jquery", "version");
</script>

0

ฉันโฮสต์ด้วยไฟล์ js อื่น ๆ ของฉันบนเซิร์ฟเวอร์ของฉันและนั่นคือจุดรวมและลดขนาดพวกเขา (ด้วย django-compresser ที่นี่ แต่นั่นไม่ใช่จุด) ที่จะให้บริการเป็นไฟล์ js เดียวกับทุกสิ่งที่เว็บไซต์ ความต้องการที่ใส่ลงไป คุณจะต้องให้บริการไฟล์ js ของคุณเองอยู่แล้วดังนั้นฉันจึงเห็นว่าไม่มีเหตุผลที่จะไม่เพิ่ม jquery bytes ที่นั่นด้วย - kbs เพิ่มเติมบางตัวมีราคาถูกกว่ามากในการถ่ายโอน คุณไม่ได้พึ่งใครเลยและทันทีที่คุณลดขนาด js ลงคุณก็เร็วมากเช่นกัน

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

ฉันสงสัยว่าประเด็นนี้แทบจะไม่เคยเอ่ยถึงเลยและดูเหมือนว่า CDNs จะครองโลกไปได้อย่างไร :)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.