رفتن به مطلب

مشکل بلوکه شدن css و js در PageSpeed گوگل


sir1

پست های پیشنهاد شده

 

سلام 

در ابزار PageSpeed گوگل وقتی سایت را چک کردم حدود 23 ادرس js و 19 css  در حالت مبایل برای ربات گوگل بلاک شده بود.که در لینک زیر می توانید مشاهده کنید.

https://developers.google.com/speed/pagespeed/insights/?url=https%3A%2F%2Facgih.ir%2F&tab=mobile

این مشکل تنها برای  مبایل است و  برای دسکتاب هیچ مشکلی وجود نداره.

در فایل robots.txt هیچ محدودیتی برای ربات گوگل در مسیر wp-content ایجاد نکردم.

 

لینک به ارسال

سلام

منظور از بلاک، اون بلاکی که شما فکر میکنید نیست

منظور از بلاک جلوگیری از لود کامل html هست

یعنی مرورگر به طور پیش‌فرض وقتی به فایل‌های css و js میرسه اول کامل اونها رو لود می‌کنه بعد میره سراغ باقی محتوای html

برای برطرف شدن مشکل می‌تونید فایل‌ها js که در هدر هست به فوتر اضافه کنید و فایل‌ها css رو هم یکی کنید 

برای این کار می‌تونید از افزونه زیر استفاده کنید

https://wordpress.org/plugins/autoptimize/

پیشنهاد خود گوگل این هست که شما بیاید برای فایل‌ها js از روش لود غیریکسان استفاده کنید

یعنی در کنار لود html فایل‌ها js هم به طور همزمان لود بشن، البته این کار در کنار مزایایی که داره می‌تونه باعث مشکل هم بشه

برای این کار می‌تونید تگ async رو به صورت زیر به کدهای js تون اضافه کنید

<script async src="my.js">

برای اینکه بتونید این تگ رو به همه فایل‌ها js در قالب اضافه کنید، می‌تونید از روش زیر استفاده کنید

/* Add async Attributes to Enqueue Scripts where Needed.
=========================================================================== */
function itl_script_tag_async( $tag, $handle ) {
    if ( is_admin() ) {
        return $tag;
    }

    if ( strpos( $tag, '/wp-includes/js/jquery/jquery' ) ) {
        return $tag;
    }

    return str_replace( ' src', ' async src', $tag );
}
add_filter( 'script_loader_tag', 'itl_script_tag_async', 10, 2 );

در کنار تگ async یه تگ دیگه هم وجود داره به نام defer

تفاوت‌شون رو می‌تونید در تصاویز زیر ببینید

وقتی از تگ async استفاده بشه: در این حالت فایل js همزمان با html از سمت سرور در حال دریافت هستند، بعد از تمام شدن دانلود js، دریافت html متوقف میشه و js اجرا میشه و در ادامه دوباره html دریافت میشهscript-async.png.5be5ddad00f077d98086a5bdbc958f1a.png

وقتی از تگ defer استفاده بشه: در این حالت فایل js همزمان با html فراخوانی میشه اما وقتی html کاملا دریافت شد js اجرا میشه

script-defer.png.9d718a715dcbcc76aae6d9932560a640.png

افزونه زیر تقریبا این موارد رو براتون انجام میده

https://wordpress.org/plugins/async-javascript/

نسخه پولی‌ش هم با افزونه autoptimize هماهنگ هست

 

منابع: 

https://developers.google.com/speed/docs/insights/BlockingJS
http://www.growingwiththeweb.com/2014/02/async-vs-defer-attributes.html
http://scottnelle.com/756/async-defer-enqueued-wordpress-scripts/

 

لینک به ارسال

ممنون از توضیحات خوبتون.

افزونه autoptimize استفاده کردم اکثر اخطاهای مربوط به blocking درست شد فقط دو مورد زیر هنوز وجود داره که رفع نمیشه

https://acgih.ir/wp-includes/js/jquery/jquery.js
https://acgih.ir/…tic/layerslider/skins/fullwidth/skin.css

 

لینک به ارسال

وردپرس پیش‌فرض jquery رو اول از همه لود می‌کنه

اگر هم بخواید این فایل رو به فوتر ببرید احتمالا قالب مشکل پیدا می‌کنه

در مورد css هم خیلی مهم نیست چون حجم فایل‌ها خیلی زیاد نیستند که مشکلی برای سرعت لود ایجاد کنند

 

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...