ไม่ได้ระบุชุดอักขระในข้อผิดพลาดส่วนหัว HTTP


15

เมื่อทดสอบหน้านี้ด้วย Page Speed ​​ฉันพบSpecify a character setข้อผิดพลาด:

The following resources have no character set specified in their HTTP headers. Specifying a character set in HTTP headers can speed up browser rendering.

Content-Typeแท็กเป็นปัจจุบันและหน้าได้รับการบันทึกไว้กับ UTF-8 เข้ารหัสเช่นกันดังนั้นที่เป็นข้อผิดพลาดมาจากไหน


ที่ไหนใน Apache ไดเรกทอรีไหน

คำตอบ:


19

มันอ้างถึงส่วนหัวของการตอบสนองและไม่ร่างกายเอกสาร ("แท็กประเภทเนื้อหา")

หากคุณตรวจสอบส่วนหัวการตอบสนองของหน้าของคุณด้วยดีบักเกอร์ HTTP ใด ๆ (ตัวอย่างเช่นแผง Net ของ Firebugสำหรับ Firefox หรือแท็บที่คล้ายกันของเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ใน Google Chrome / Internet Explorer / Safari / Opera) คุณจะเห็นบรรทัดนี้:

Content-Type: text/html

ในเวลาเดียวกันหากคุณตรวจสอบหน้าเดียวกันนี้คุณจะเห็น:

Content-Type: text/html; charset=utf-8

Page Speed ​​อ้างถึงส่วนที่หายไป มีที่ถูกต้องที่กำหนดตัวอักษรที่มีอยู่ในหัวก็จะเพิ่มความเร็วในการแสดงผลหน้าเว็บบิต ด้วยชุดอักขระที่ไม่ถูกต้องที่ระบุในส่วนหัวการตอบสนอง (หรือไม่มีชุดอักขระเลย) เบราว์เซอร์จะต้องสแกน / ตีความหน้าจนกว่าจะพบการประกาศชุดอักขระที่ถูกต้อง ( <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />บรรทัด) จากนั้นเริ่มกระบวนการแสดงผลอีกครั้งหากชุดอักขระแตกต่างจากเบราว์เซอร์ การตั้งค่าเริ่มต้น

โทษประสิทธิภาพไม่มากสำหรับผู้ใช้ที่ไม่สามารถสังเกตเห็นได้เว้นแต่ว่ามีการใช้งานฮาร์ดแวร์เก่า / ช้าจริง ๆ (แม้ว่าจะแตกต่างกันไปสำหรับเบราว์เซอร์และเบราว์เซอร์แต่ละรุ่น) อาจจะมี "บทลงโทษ" อื่น ๆ ที่เกี่ยวข้องโดยตรงกับเรื่องนี้ แต่โดยส่วนตัวแล้วฉันไม่รู้ตัว

แก้ไข:ถ้าคุณสร้างส่วนหัวนี้ด้วยตัวเอง (ในสคริปต์ PHP ของคุณ) จากนั้นคุณจะต้องแก้ไขให้รวม charset ด้วย หากสคริปต์ของคุณไม่ได้จัดการส่วนหัวดังกล่าวแสดงว่าเป็นปัญหาการกำหนดค่าเซิร์ฟเวอร์ผิดพลาด


header('Content-type: text/html; charset=UTF-8');ฉันเพิ่งเพิ่ม ขอบคุณมาก!
อเล็กซ์

6
curl --head $urlนอกจากนี้คุณยังสามารถดูส่วนหัวของการตอบสนองด้วย ชุดอักขระเริ่มต้นสามารถระบุได้ใน Apache โดยเพิ่มAddDefaultCharset utf-8ลงในไฟล์ปรับแต่งเช่น. htaccess
Lri

+1 สำหรับคำอธิบายที่ชัดเจนมักสงสัยและสับสน แก้ไขด้วย htaccess AddDefaultCharset นอกจากนี้
Malachi

ไม่ควร<meta charset="utf+8">พอเพียง?
Daniel Springer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.