1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آموزش رفع خطای Specify a character set early در GTmetrix

شروع موضوع توسط pn.topforum ‏26/11/19 در انجمن WordPress

  1. عضو جدید

    تاریخ عضویت:
    ‏12/10/19
    ارسال ها:
    4
    تشکر شده:
    1
    امتیاز دستاورد:
    3
    جنسیت:
    زن
    [​IMG]

    یکی دیگه از خطاهایی که هنگام تست سرعت سایت در GTmetrix ممکنه باهاش مواجه بشید با عنوان Specify a character set early به وجود میاد که مربوط به متاتگ character set هست که برای برطرف کردن این خطا باید متاتگ character set رو به صورت یک درخواست HTTP در سایت ارسال کنیم.
    کاری که character set در سایت انجام میده اینه که به عنوان یک استاندارد بین المللی شناخته شده میاد و مواردی که مربوط به تبادل اطلاعات چندزبانه بودن یک سایت هست و از قبل تعریف شده‌اند رو برطرف میکنه. به عبارت دیگه، این استاندارد بین المللی مشخص میکنه که بسته به زبان محتویات سایت چطور باید به کاربران نشون داده بشه که این کار توسط مرورگر شناسایی خواهد شد. این استاندارد بین المللی چند نوع مختلف داره که پر استفاده‌ترین حالتش UTF-8 هست که حتما در یادگیری زبان HTML بهش برخوردید. در بتدای هر سند HTML ما میایم و به کمک کد زیر character set رو برای سند HTML روی حالت UTF-8 مشخص می‌کنیم.


    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    حالا مشکلی که در این زمینه وجود داره اینه که در برخی مرورگرها مثل مرورگر اینترنت اکسپلورر(نسخه 8 به پایین) مرسوم هست، باید بیایم و از هدر مخصوص به خود این مرورگر برای معرفی character set استفاده کنیم تا زمان لود سایت رو بهینه کنیم. توی این مرورگر و برخی مرورگرهای دیگه این متاتگ در همه صفحات وجود داره و مدام با رفتن بازدیدکننده به هر صفحه این مورد از سمت سرور بررسی شده و بعد از اینکه پاسخ مثبت یا منفی ارسال شد، سایت شروع به لود شدن متناسب با این پاسخ خواهد کرد. همین موضوع باعث میشه تو حالتی که در همه صفحات قرار داره مشکل آفرین بشه که در نهایت با مشکل بالا رفتن تعداد درخواست HTTP مواجه میشیم که بهتره یک بار این مورد از سمت سرور برای کاربر مشخص شده و برای همیشه تو این حالت باقی بمونه.

    [​IMG]

    در بیشتر موارد این خطا به رنگ سبز هست و مشکلی باهاش نخواهید داشت. اما اگر با این گزینه به مشکل برخوردید و با رنگ قرمز بهتون نشون داده شد، برای حل مشکل کاری که باید انجام بدین اینه که متاتگ character set را به شکل درخواست HTTP برای کاربر ارسال کنید. یعنی باید بیایم و با استفاده از زبان سرور و نوع سرور این درخواست رو به صورت header HTTP مشخص کنیم. سپس در اولین بازدید کاربر از سایت این حالت مشخص میشه و دیگه تو بازدید از صفحات دیگه نیاز نیست دوباره درخواست جدیدی برای مشخص شدن نوع character set ارسال بشه. بسته به زبان مورد استفاده و سروری که ازش استفاده می‌کنید میتونید از راهکارهای زیر استفاده کنید.

    [​IMG]

    در زبان php
    در صورتی که از زبان php در سایت خودتون استفاده می‌کنید و با خطای Specify a character set early مواجه شدید، میتونید با استفاده از دستور زیر این درخواست رو در header ایجاد بکنید.

    header("Content-Type: text/html; charset=utf-8");


    سرور آپاچی
    اما اگه از وب سرور Apache استفاده می‌کنید باید کد زیر رو در فایل htaccess. وارد کنید.

    AddType 'text/html; charset=UTF-8' html


    سرور Nginx
    اگر زبان مورد استفاده در سایت شما چیزی غیر از php هست، مثل asp یا پایتون و… باید قبل از هر کاری ببینید که نوع وب سرور استفاده شده چی هست. اگر وب سرور از نوع Nginx استفاده می‌کنید، با استفاده از کد زیر در بخش config سرور میتونید این درخواست رو ایجاد کنید.

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

    بعد از اینکه بسته به زبان برنامه نویسی و نوع سرور درخواست رو در هدر به صورت http ایجاد کردید، مجددا که سایت رو بررسی کنید خواهید دید که خطا برطرف شده و گزینه Specify a character set early در جی تی متریکس با رنگ سبز نمایش داده خواهد شد.

    منبع : mizbanfa.net
     
    آخرین بار توسط مدیر ویرایش شد: ‏27/11/19