ทำไมไม่ทั้งสอง¯ \ _ (ツ) _ / ¯? สกอตต์ Hanselman มีบทความดี ๆ เกี่ยวกับการใช้ CDN สำหรับเพิ่มประสิทธิภาพการทำงานได้อย่างสง่างาม แต่กลับไปสำเนาในกรณีที่ลดลง CDN ลง
เฉพาะสำหรับ bootstrap คุณสามารถทำสิ่งต่อไปนี้เพื่อโหลดจาก CDN ด้วยทางเลือกในเครื่อง :
<head>
<link rel="stylesheet" href="~https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css">
<script>
var test = document.createElement("div")
test.className = "hidden d-none"
document.head.appendChild(test)
var cssLoaded = window.getComputedStyle(test).display === "none"
document.head.removeChild(test)
if (!cssLoaded) {
var link = document.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.href = "lib/bootstrap.min.css";
document.head.appendChild(link);
}
</script>
</head>
<body>
<script src="~https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="lib/jquery.min.js"><\/script>')</script>
<script src="~https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
<script>if(typeof($.fn.modal) === 'undefined') {document.write('<script src="lib/bootstrap.min.js"><\/script>')}</script>
</body>
อัปเดต
ปฏิบัติที่ดีที่สุด
สำหรับคำถามของคุณเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดมีเหตุผลที่ดีมากมายในการใช้ CDNในสภาพแวดล้อมการผลิต :
- มันเพิ่มความขนานที่มีอยู่
- จะเพิ่มโอกาสที่จะมีการโจมตีด้วยแคช
- ทำให้มั่นใจได้ว่าน้ำหนักบรรทุกจะเป็นขนาดเล็กที่สุด
- ช่วยลดจำนวนแบนด์วิดท์ที่เซิร์ฟเวอร์ของคุณใช้
- เพื่อให้แน่ใจว่าผู้ใช้จะได้รับการตอบสนองอย่างใกล้ชิดทางภูมิศาสตร์
สำหรับข้อกังวลเกี่ยวกับการกำหนดเวอร์ชันของคุณ CDN ใด ๆ ที่มีค่าน้ำหนักเป็นเกลือช่วยให้คุณกำหนดเป้าหมายเวอร์ชันเฉพาะของไลบรารีได้ดังนั้นคุณจะไม่แนะนำการเปลี่ยนแปลงที่ไม่สมบูรณ์ในแต่ละรุ่น
การใช้ document.write
ตาม mdn บน document.write
หมายเหตุ : เป็นdocument.write
เขียนเอกสารกระแสเรียกdocument.write
บนปิด (โหลด) เอกสารเรียกโดยอัตโนมัติdocument.open
, ซึ่งจะล้างเอกสาร
อย่างไรก็ตามการใช้งานที่นี่เป็นความตั้งใจ รหัสจะต้องดำเนินการก่อนที่ DOM จะโหลดเต็มที่และเรียงตามลำดับที่ถูกต้องด้วย หาก jQuery ล้มเหลวเราจำเป็นต้องฉีดลงในเอกสารแบบอินไลน์ก่อนที่เราจะพยายามโหลด bootstrap ซึ่งอาศัย jQuery
เอาต์พุต HTML หลังจากโหลด :
ในทั้งสองกรณีนี้เรากำลังโทรหาในขณะที่เอกสารยังคงเปิดอยู่ดังนั้นจึงควรแทรกเนื้อหาในบรรทัดแทนที่จะแทนที่ทั้งเอกสาร หากคุณรอจนจบคุณจะต้องแทนที่ด้วยdocument.body.appendChild
เพื่อแทรกแหล่งที่มาแบบไดนามิก
นอกเหนือจาก : ใน MVC 6 คุณสามารถทำได้ด้วยตัวช่วยลิงก์และแท็กสคริปต์
rgb(51, 51, 51)
ดูเหมือนมีความเสี่ยง - จะเกิดอะไรขึ้นหากมีคนเปลี่ยนสีและลืมอัปเดต มีคุณสมบัติที่มั่นคงกว่าที่สามารถใช้ได้หรือไม่?