ทำไมวันนี้ถึงไม่แสดงข้อความในเว็บไซต์ทันที


444

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

มันใช้งานได้ตรงกันข้ามกับที่เคยใช้เมื่อข้อความปรากฏขึ้นก่อนจากนั้นภาพและส่วนที่เหลือจะโหลดหลังจากนั้น เทคโนโลยีใหม่ใดที่สร้างปัญหานี้ ความคิดใด ๆ

โปรดทราบว่าฉันใช้การเชื่อมต่อที่ช้าซึ่งอาจเน้นปัญหา

ดูตัวอย่างด้านล่าง - ทุกอย่างถูกโหลด แต่ใช้เวลาไม่กี่วินาทีก่อนที่ข้อความจะปรากฏขึ้นในที่สุด:

ป้อนคำอธิบายรูปภาพที่นี่


72
ในกรณีนี้ PortableApps.com ใช้แบบอักษร "Ubuntu" จอห์นลอง OpenSans ก่อน แต่เราเปลี่ยนมาใช้ Ubuntu อย่างรวดเร็ว ฉันเป็นผู้สนับสนุนหลักของการสลับ ... วิธีหนึ่งที่คุณสามารถลบปัญหาได้คือโดยการติดตั้งตระกูลฟอนต์ด้วยตัวเอง หากคุณติดตั้งจากfont.ubuntu.comมันจะทำงานทันที
Chris Morgan

21
คำตอบของ Daniel คือการเปิดตา ฉันคิดว่านี่เป็นจุดประสงค์เพื่อให้เราสามารถดูโฆษณาทั้งหมดในหน้า
Manoj R

1
เนื่องจากมีหลายคนชี้ให้เห็นที่นี่มีเหตุผลมากมายที่ทำให้ข้อความแสดงในรูปแบบที่ไม่คาดคิดเนื่องจากการแสดงผลหน้าเว็บถูก จำกัด ด้วยจินตนาการของนักพัฒนา / ผู้ออกแบบซึ่งเป็นกรณีอย่างน้อยตั้งแต่ ANSI รหัสตำแหน่งอนุญาตให้มีการแถลง 1980 บอร์ดเพื่อใช้การแชทของผู้ใช้หลายคนและ UIs ด้วยหน้าต่างที่ซ้อนกันพร้อมเงาที่หล่น Meebo เป็นคนแรกที่สร้างผลกระทบเหล่านี้บางส่วนในเบราว์เซอร์ที่ไม่มีแอปเพล็ต "ทำงานตรงข้ามกับที่เคยทำ" ทำให้อินเทอร์เน็ตง่ายขึ้นอย่างมากและไม่ได้อ้างถึงช่วงเวลาที่ระบุ
PJ Brunet

6
เหตุใดจึงต้องทำการสรุปทั่วไปเกี่ยวกับอินเทอร์เน็ตโดยอิงจากหน้าจอแบบสุ่มหนึ่งหน้าจากเว็บไซต์ที่มีอันดับ Alexa ต่ำ คำตอบที่ดีที่สุดคือการอ้างสิทธิ์อย่างกล้าหาญ: "ปัจจุบันนักออกแบบทำ XYZ" ควรสำรองข้อมูลด้วยจำนวนจริงเช่น "5% ของเว็บไซต์ที่ใช้ Google Web Fonts ตั้งแต่ปี 2012" หรืออะไรก็ตาม
PJ Brunet

1
แต่ไฟล์ฟอนต์ถูกเก็บไว้ในแคชเว็บไซต์นี้รอโหลด m.aspx นานพวกเขาอาจตรวจสอบส่วนนั้น
user613326

คำตอบ:


483

เหตุผลหนึ่งคือนักออกแบบเว็บในปัจจุบันต้องการที่จะใช้แบบอักษรเว็บ (โดยปกติในWOFFรูปแบบ) เช่นผ่านอักษรเว็บของ Google

ก่อนหน้านี้ฟอนต์เดียวที่สามารถแสดงบนไซต์ได้คือฟอนต์ที่ผู้ใช้ติดตั้งไว้ในเครื่อง เนื่องจากเช่นผู้ใช้ Mac และ Windows ไม่จำเป็นต้องมีแบบอักษรเหมือนกันนักออกแบบจึงกำหนดกฎไว้โดยสัญชาตญาณเสมอ

font-family: Arial, Helvetica, sans-serif;

โดยที่หากไม่พบตัวอักษรตัวแรกในระบบเบราว์เซอร์จะมองหาตัวที่สองและสุดท้ายก็คือตัวอักษร "sans-serif" ทางเลือกสุดท้าย

ตอนนี้หนึ่งสามารถให้ URL แบบอักษรเป็นกฎ CSS เพื่อรับเบราว์เซอร์เพื่อดาวน์โหลดแบบอักษรเช่น:

@import url(http://fonts.googleapis.com/css?family=Droid+Serif:400,700);

จากนั้นโหลดแบบอักษรสำหรับองค์ประกอบเฉพาะโดยเช่น:

font-family: 'Droid Serif',sans-serif;

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

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

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


ส่วนที่เพิ่มเข้าไป

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

เห็นได้ชัดว่าปรากฏการณ์นี้เป็นที่รู้จักกันในนาม "แฟลชของเนื้อหาที่ไม่มีการจัดสไตล์" โดยทั่วไปและ "แฟลชของข้อความที่ไม่มีการจัดรูปแบบ" โดยเฉพาะ การค้นหา "FOUC" และ "FOUT" ให้ข้อมูลเพิ่มเติม

ฉันสามารถขอแนะนำโพสต์นักออกแบบเว็บไซต์พอลไอริชใน fout ในการเชื่อมต่อกับเว็บแบบอักษร

สิ่งที่สามารถสังเกตได้คือเบราว์เซอร์ที่แตกต่างกันจัดการสิ่งนี้แตกต่างกัน ฉันเขียนไว้ข้างต้นว่าฉันได้ทดสอบ Opera และ Chrome แล้วซึ่งทั้งสองคนมีพฤติกรรมคล้ายกัน คนที่ใช้ WebKit ทั้งหมด (Chrome, Safari, ฯลฯ ) เลือกที่จะหลีกเลี่ยง FOUT โดยไม่แสดงข้อความตัวอักษรบนเว็บด้วยแบบอักษรสำรองในระหว่างระยะเวลาการโหลดแบบอักษรบนเว็บ แม้ว่าตัวอักษรเว็บแคชมีจะมีความล่าช้าทำให้ มีความคิดเห็นจำนวนมากในกระทู้คำถามนี้ที่พูดเป็นอย่างอื่นและมันไม่ถูกต้องว่าแบบอักษรที่แคชไว้มีลักษณะเช่นนี้ แต่เช่นจากลิงค์ด้านบน:

คุณจะได้รับอะไรในกรณีใดบ้าง

  • จะ: การดาวน์โหลดและแสดง ttf / otf / woff ระยะไกล
  • จะ:แสดงแคช ttf / otf / woff
  • จะ: การดาวน์โหลดและแสดง data-uri ttf / otf / woff
  • จะ:แสดงแคชข้อมูล -turi ttf / otf / woff
  • จะไม่:แสดงแบบอักษรที่ติดตั้งแล้วและตั้งชื่อแล้วในแบบอักษรสแต็กดั้งเดิมของคุณ
  • จะไม่:แสดงแบบอักษรที่ติดตั้งและตั้งชื่อโดยใช้ตำแหน่ง local ()

เนื่องจาก Chrome รอจนกระทั่งความเสี่ยง FOUT หายไปก่อนที่จะแสดงผลสิ่งนี้จึงล่าช้า ซึ่งขอบเขตผลกระทบที่จะมองเห็นได้ (โดยเฉพาะอย่างยิ่งเมื่อโหลดจากแคช) ดูเหมือนว่าจะขึ้นอยู่กับหมู่สิ่งอื่น ๆ จำนวนของข้อความที่จะต้องมีการแสดงผลและบางทีอาจจะมีปัจจัยอื่น ๆ แต่แคชไม่สมบูรณ์ลบผลกระทบ

Irish ยังมีการอัปเดตบางอย่างเกี่ยวกับพฤติกรรมของเบราว์เซอร์ตั้งแต่ 2011–04–14 ที่ด้านล่างของโพสต์:

  • Firefox (ตั้งแต่ FFb11 และ FF4 Final) จะไม่มี FOUT! Wooohoo! http://bugzil.la/499292โดยทั่วไปข้อความจะไม่ปรากฏเป็นเวลา 3 วินาทีจากนั้นจะนำแบบอักษรสำรองกลับมา webfont อาจโหลดภายในสามวินาทีแม้ว่า ... หวังว่า ..
  • IE9 รองรับ WOFF และ TTF และ OTF (แม้ว่าจะต้องใช้ชุดบิตฝัง - ส่วนใหญ่จะ moot ถ้าคุณใช้ WOFF) อย่างไรก็ตาม !!! IE9 มีข้อผิดพลาด :(
  • Webkit มีโปรแกรมแก้ไขที่รอลงจอดเพื่อแสดงข้อความทางเลือกหลังจาก 0.5 วินาที พฤติกรรมเช่นเดียวกับ FF แต่ 0.5 วินาทีแทนที่จะเป็น 3 วินาที
  • เพิ่มเติม : Blink มีข้อผิดพลาดในการลงทะเบียนเช่นกันแต่ดูเหมือนว่าฉันทามติขั้นสุดท้ายยังไม่ได้รับการพิจารณาเกี่ยวกับสิ่งที่ต้องทำกับมัน - ขณะนี้การใช้งานแบบเดียวกับ WebKit

หากนี่เป็นคำถามสำหรับนักออกแบบเราสามารถหาวิธีหลีกเลี่ยงปัญหาเหล่านี้ได้เช่นwebfontloaderแต่นั่นจะเป็นอีกคำถามหนึ่ง ลิงค์ Paul Irish มีรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้


7
เบราว์เซอร์ใด ๆ ที่พยายามแสดงข้อความเป็นแบบอักษรที่มีอยู่ก่อนแล้วจึงแสดงอีกครั้งเมื่อดาวน์โหลดแบบอักษรที่ต้องการหรือไม่
Steve Bennett

4
โอ้, duh, แสดงความคิดเห็นกับคำตอบต่อไป: paulirish.com/2009/fighting-the-font-face-fout
Steve Bennett

5
@ ratchetfreak มันคงไม่น่าเป็นไปได้ที่จะฟอร์แมตหน้าใหม่เนื่องจากแบบอักษรอาจไม่มีตัวชี้วัดเหมือนกัน
Samuel Edwin Ward

6
บางคนชอบที่จะอ่านส่วนหนึ่งของการเรียกดูเว็บเพจแทนการรอคอยอายุสำหรับตัวอักษรที่จะโหลด
ratchet freak

@SteveBennett ฉันค่อนข้างแน่ใจว่าเป็นสิ่งที่ Internet Explorer 10 กำลังทำอยู่ ฉันไม่เคยเห็นข้อความโผล่ขึ้นมาในภายหลัง สำหรับฉันข้อความที่ปรากฏใน "แบบอักษรมาตรฐาน" เสมอและไม่กี่วินาทีต่อมาจะเปลี่ยนเป็นรูปแบบ / ดาวน์โหลด ฉันไม่แน่ใจว่าจะเลือก CSS ตัวถัดไปหรือเป็นค่าเริ่มต้นของระบบ แก้ไข: อืมดีดังนั้นมันจึงเป็นเพียง Webikit พร้อมข้อความที่ซ่อนอยู่? ฉันคิดว่าพฤติกรรมที่น่ารำคาญและไม่ดี มีเบราว์เซอร์ใดที่ละเลย / ซ่อนการโหลดรูปภาพแบบโปรเกรสซีฟหรือไม่?
มาริโอ

117

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

นอกจากนี้เนื่องจากเบราว์เซอร์ของคุณคือ Google Chrome ซึ่งใช้ WebKit เพื่อแสดงผลหน้าเว็บพวกเขาจึงตัดสินใจ (WebKit นั่นคือ) ซึ่งเป็นการดีที่สุดสำหรับคุณที่จะไม่เห็นข้อความใด ๆ เลยจนกว่าจะดาวน์โหลดแบบอักษรเว็บ อย่างไรก็ตามหากคุณเป็นนักพัฒนาซอฟต์แวร์ที่ต้องการให้ข้อความอ่านได้ในแบบอักษรระบบถอยกลับที่เหมาะสมคุณสามารถใช้WebFont Loader ของ Googleเพื่อทำสิ่งนี้ได้


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

19

คำตอบสั้น ๆ : AJAXหรือWOFF

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

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

  • หน้า HTML เริ่มต้น
  • CSS
  • JS
  • ภาพ
  • แบบอักษร WOFF
  • คำขอ AJAX
  • การจัดการ DOM

เว็บไซต์ตามเนื้อผ้า:

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


เว็บไซต์ WOFF:

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


เว็บไซต์ AJAX:

นักพัฒนาบางคนเลือกที่จะไม่รวมเนื้อหาข้อความในหน้า HTML เริ่มต้น แต่พวกเขาเลือกที่จะดาวน์โหลดเนื้อหาข้อความโดยใช้ AJAX สิ่งนี้เกิดขึ้นหลังจากโหลดหน้าพื้นฐานแล้ว จากประสบการณ์ของฉันวิธีนี้ได้รับการยอมรับอย่างกว้างขวางมากกว่าแบบอักษร WOFF และส่วนใหญ่มักเป็นสาเหตุของความเชื่องช้าที่คุณอธิบาย


การหาสาเหตุ

เพื่อหาสาเหตุสำหรับเว็บไซต์ที่เฉพาะเจาะจงต้องใช้การวิเคราะห์โดยใช้เครื่องมือเช่นFirebugหรือChrome เครื่องมือสำหรับนักพัฒนา หรือมิฉะนั้นคุณสามารถเปิดไซต์โดยใช้Internet Explorer 8ซึ่งรองรับ AJAX แต่ไม่ใช่ WOFF หากเว็บไซต์ยังคงช้าปัญหาคือ AJAX และไม่ใช่ WOFF


14

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


6
เก้าในสิบครั้งจะไม่ได้รับการไตร่ตรอง แต่เป็นผลข้างเคียงของการฝังเว็บฟอนต์ในวิธีที่ง่ายที่สุดที่เป็นไปได้ ในความเป็นจริงมันใช้ความพยายามพิเศษเล็กน้อยในการนำเสนอทางเลือกที่สามารถมองเห็นได้ในขณะที่แบบอักษรบนเว็บกำลังลดลง ดูdevelopers.google.com/webfonts/docs/webfont_loader
Marcel

@Marcel - สิ่งนี้อาจเกิดจากสไตล์ชีทช้าเช่นเดียวกับแบบอักษรช้าดูphpied.com/css-and-the-critical-path
r3m0t

รหัสเพื่อป้องกัน "แฟลชของเนื้อหาที่มีประโยชน์" มีแนวโน้มที่จะป้องกันไม่ให้ภาพปรากฏเช่นเดียวกับข้อความ
Jon Hanna

ฉันพยายามเข้าใจว่าทำไมข้อความที่ไม่มีการจัดเรียงจึงแย่กว่าไม่มีเลย ฉันควรจะเริ่มอ่านการยอมรับว่ามันอาจจะกระตุกเล็กน้อย ฉันพบว่ามันสั่นสะเทือนมากขึ้นเมื่อมันปรากฏขึ้นอย่างฉับพลันในที่ที่ไม่มีที่ไหนเลยและมันน่าผิดหวังมากเมื่อหน้าโหลดและคุณถูกบังคับให้ต้องรอแบบอักษร
Richard Le Poidevin

8

ดังที่คนอื่น ๆ ได้สังเกตเห็นว่าแบบอักษรที่กำหนดเองมีส่วนทำให้เกิดความล่าช้า

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

  1. ดึง HTML (การเดินทางไปกลับหลายครั้งสำหรับ DNS, TCP, การร้องขอ / ตอบกลับ)
  2. เริ่มแยกวิเคราะห์ HTML ค้นหาทรัพยากรภายนอกเช่น CSS และ JS ภายนอก โปรดทราบว่า CSS บล็อกเลย์เอาต์และ JS จะแยกวิเคราะห์ ดังนั้นทรัพยากรภายนอกเช่น CSS และ JS โหลดในช่วงต้นของเอกสาร (เช่นในหัว) ช้าลงเวลาที่หน้าใช้ในการแสดงเนื้อหาบนหน้าจอ
  3. ดึง CSS และ JS ภายนอก (การเดินทางไปกลับหลายครั้ง: DNS และ TCP หากทรัพยากรเหล่านี้อยู่ในโดเมนอื่นเช่น CDN รวมถึง RTT สำหรับคำขอ / ตอบกลับ)
  4. เมื่อ CSS และ JS ภายนอกโหลดเสร็จแล้วให้แยกวิเคราะห์ / ดำเนินการ JS แยกวิเคราะห์ / ใช้สไตล์
  5. หาก CSS อ้างอิงถึงแบบอักษรที่กำหนดเองตอนนี้จะต้องดาวน์โหลดแบบอักษรเหล่านั้นด้วยเช่นกันทำให้มีความล่าช้าในการปัดเศษเพิ่มเติมเพื่อแสดงส่วนใด ๆ ของหน้าเว็บที่ขึ้นอยู่กับแบบอักษรที่กำหนดเอง

แม้ว่ามันจะไม่เกี่ยวกับความล่าช้าที่เกิดจากแบบอักษรที่กำหนดเองโดยเฉพาะฉันเขียนโพสต์บล็อกเมื่อเร็ว ๆ นี้ที่ให้ข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุของความล่าช้าในการแสดงผล มันให้คำแนะนำเพื่อลดเวลาในการระบายสีครั้งแรกสำหรับหน้าเว็บของคุณ หวังว่านี่จะเป็นประโยชน์สำหรับผู้อ่านที่สนใจในการทำให้หน้าของพวกเขาแสดงเนื้อหาได้เร็วขึ้นรวมถึงหน้าเว็บที่ต้องการใช้แบบอักษรที่กำหนดเอง: http://calendar.perfplanet.com/2012/make-your-mobile-pages-render-in-under -หนึ่งวินาที/


4

คำตอบสั้น ๆ : นักพัฒนา

เมื่อลิงค์และแท็กสคริปต์ที่อ้างถึงเอกสารภายนอก (เช่นไฟล์. css หรือ. js) ถูกวางไว้ที่ส่วนหัวของเอกสาร (ในโฟลว์สูงกว่าเนื้อความและองค์ประกอบ) จะถูกโหลดก่อน JavaScript เรียกใช้จากมาร์กอัพที่อ้างอิง หากมีรหัสจำนวนมากที่ต้องดำเนินการหรือเป็นรหัสที่ยุ่งยากหรือมากกว่าปกติหากข้อความที่คุณคาดว่าจะเห็นมีการแสดงผลบนเซิร์ฟเวอร์และบรรจุลงในเอกสารขณะโหลด - และรหัสฝั่งเซิร์ฟเวอร์ก็ยุ่งยากเช่นกัน ใหญ่หรือปิดกั้น I / O เนื่องจากการประมวลผลคำขอหลาย ๆ อย่างพร้อมกันคุณอาจสังเกตเห็นการหยุดทำงานก่อนที่ HTML จะมีโอกาสแสดงผลได้ นักพัฒนาบางคนเลือกที่จะโหลด JavaScript ที่ไม่เกี่ยวข้องกับมุมมองหลังจากมาร์กอัปและสไตล์ (ที่ส่วนท้ายของเนื้อหา)

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


21
Nope - สิ่งที่คุณอธิบายสามารถบล็อกองค์ประกอบของ DOM ไม่ให้แสดง แต่ไม่ใช่แค่ข้อความ คำตอบคือจะทำอย่างไรกับการเปลี่ยนแบบอักษรและเป็นความผิดของนักออกแบบไม่ใช่นักพัฒนา
Toby

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

1
คำตอบยาว: นักพัฒนานักพัฒนานักพัฒนานักพัฒนา
iono

@Toby นักออกแบบระบุว่าจะใช้แบบอักษรใดใช่ แต่เป็นหน้าที่ของนักพัฒนาที่ดีทุกคนเพื่อเลือกตัวเลือกที่เหมาะสมระหว่างการใช้งานด้านเทคนิค นักพัฒนาที่ดีจะเข้าใจว่าเหตุใดจึงเกิดขึ้น (อธิบายไว้ในคำตอบข้างต้น) ตัวเลือกใดบ้างที่สามารถหลีกเลี่ยงปัญหาได้ (Google Webfont Loader) และวิธีการที่ส่งผลกระทบต่อประสบการณ์
arbales

3

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

อันดับแรกอ้างถึง. css, .js และ webfonts ทั้งหมดที่หน้าโหลดไม่ต้องพูดถึงความจริงที่ว่าหลาย ๆ ไซต์จำเป็นต้องดึงข้อมูลวัตถุ JSON viea XHR ร้องขอจากนั้นสร้าง HTML จากการใช้ templating บางประเภท

แต่ทำไมพวกเขาไม่สังเกตเห็นว่าเว็บไซต์ช้า?

อาจเป็นเพราะพวกเขามี memecache ในนั้นเพื่อเพิ่มความเร็ว (หรือพึ่งแคชของระบบไฟล์) และกำลังวัดความสมบูรณ์ของไซต์โดยใช้เวลาแฝงเฉลี่ย ดังนั้นวัตถุที่แคชจะถูกส่งคืนด้วยความหน่วงแฝง 6 มิลลิวินาทีและปกปิดความจริงที่ว่าคำขอ GET จำนวนมากใช้เวลา 5,000 มิลลิวินาทีในการทำให้เสร็จสมบูรณ์ ค่าเฉลี่ยจะต้องตาย ลองใช้การนับ RTT สดกว่าขีด จำกัด สูงสุดที่ยอมรับได้! หมายเลขนั้นควรเป็น 0 หรือโดยนิยาม RTT ไม่สามารถยอมรับได้


-1

มีหลายเหตุผล เหตุผลหนึ่งก็คือคำสั่งเพื่อกำหนดพื้นหลังหรือด้านบนของหน้า html บ่อยครั้งหรือดึงใน CSS แยกต่างหากที่โหลดครั้งแรก ก่อนที่จะโหลดเนื้อหาของเอกสารซึ่งมีข้อความ

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

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

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

ฉันขอแนะนำให้ทุกท่านที่จัดการกับการโหลดหน้าช้าเพื่อลอง fidler fidler สามารถใช้กับ IEexplorer หรือกับ FireFox (โดยใช้ฟังก์ชั่นพร็อกซีของมัน) Fidler จะแสดงให้คุณเห็นว่าใช้เวลานานแค่ไหนและเมื่อส่วนต่าง ๆ ของหน้าเว็บถูกโหลด มันเป็นเครื่องมือแก้จุดบกพร่อง HTML


ดังนั้นคุณพยายามที่จะช่วยผู้คนและลงคะแนนไม่สนุกใช่ไหม ตกลงฉันจะคิดอีกครั้งก่อนที่จะอธิบายสิ่งที่คนทางเทคนิคในแง่ laymens ที่นี่
user613326

21
คุณอธิบายสิ่งผิดนั่นคือสาเหตุที่คุณถูกลดระดับลง อย่างที่คุณเห็นในสกรีนช็อตหน้านั้นเต็มแล้วมีเพียงข้อความที่ไม่ปรากฏ นี่ไม่เกี่ยวอะไรกับภาพเลย
Femaref

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

1
@raylu ฉันไม่รู้เกี่ยวกับข้อมูลที่ผิด การเห็นคำตอบที่มี downvotes จำนวนมากอาจเป็นประโยชน์ในบางครั้ง :-)
LarsTech

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