بک لینک

چگونه با وردپرس در Google PageSpeed Insights امتیاز ۱۰۰/۱۰۰ بگیریم؟
#1
غیر عادی نیست که مشتریان یک شرکت از توسعه‌دهنده‌ی وردپرس خود بخواهند تا امتیاز Google PageSpeed Insights آن‌ها را افزایش دهد. گوگل بازاریابی خوبی برای این ابزار انجام می‌دهد و بیشتر مصرف‌کنندگان متوجه نمی‌شوند که امتیاز کامل، پایان همه چیز نیست. گاهی اوقات این قضیه خیلی آدم را اذیت می‌کند. با همه‌ی این‌ها، امروز می‌خواهیم چند نکته و استراتژی را با شما در میان بگذاریم که می‌تواند به شما کمک کند تا با وب‌سایت وردپرس خود از ابزار Google PageSpeed Insights امتیاز ۱۰۰/۱۰۰ بگیرید.
ابزار Google PageSpeed Insights چقدر مهم است؟
ابزار Google PageSpeed Insights یک ابزار سنجش عملکرد وب توسط گوگل است و به شما کمک می‌کند تا به سادگی با پیروی از بهترین روش‌های توسعه‌ی وب، راهکارهایی را برای سریع‌تر شدن و موبایل-فرندلی شدن سایت خود شناسایی کنید. اما نکته‌ی بسیار مهمی که باید به خاطر داشته باشید این است که نباید همیشه برای رسیدن به امتیاز ۱۰۰/۱۰۰ وسواس به خرج دهید. اصلاً ممکن است که بسته به ساختار و نحوه‌ی تنظیمات وب‌سایت وردپرس شما، چنین کاری در همه‌ی حالات ممکن نباشد. با وجود این همه پوسته‌ی چندمنظوره و سایت‌های حاوی اسکریپت‌های خارجی، به سادگی قادر نخواهید بود تا زمان خود را صرف به دست آوردن امتیاز کامل کنید؛ که البته این قضیه کاملاً قابل قبول است.
توصیه‌ی ما این است که بیشتر به سرعت سایت خود نگاه کنید تا این امتیازات. امتیاز ابزارهایی مثل Pingdom، GTMetrix و Google PageSpeed Insights می‌تواند شما را به گمراهی بکشاند. به خصوص این که بعضی از آن‌ها هنوز حتی از HTTP/2 نیز پشتیبانی نمی‌کنند. آنچه که واقعاً اهمیت دارد این است که از بارگیری سریع سایت خود و همچنین از عملکرد ادراک‌شده‌ی آن اطمینان یابید. عملکرد ادراک‌شده، احساس کاربر از سرعت بارگیری سایت شماست.

آیا گوگل در سئو و فاکتور رتبه‌بندی سرعت صفحه از PageSpeed Insights استفاده می‌کند یا مقدار خام سرعت پاسخ‌گویی؟
این سوال جالبی بود که توسط یک سئوکار در FDP Group Leeds مطرح شد و در Search Engine Roundtable نیز مورد بحث قرار گرفت. گری ایلیس (Gary Illyes) تحلیل‌گر تمایلات وب‌مسترها در گوگل به این شکل پاسخ داد که «به نظرم هر دو تأثیرگذار است».
یکی از دلایل عمده‌ی آن این است که اغلب اگر وب‌سایت کندی داشته باشید، به احتمال خیلی زیاد هشدارهای زیادی هم در Google PageSpeed Insights خواهید داشت. بسیاری از توصیه‌های این ابزار رابطه‌ی نزدیکی با زمان پاسخ‌گویی شما دارد. لزوماً رابطه‌ی ۱۰۰% مستقیمی بین آن‌ها برقرار نیست، اما آنچه که گری به احتمال زیاد قصد دارد بگوید این است که اگر وب‌سایت کندی دارید، بله، احتمالاً روی رتبه‌بندی شما تأثیرگذار است.

کسب امتیاز ۱۰۰/۱۰۰ روی هاست اشتراکی
به نظرمان رسید که جالب می شود اگر کمی پوسته‌ی ۲۰۱۷ را در وردپرس ۴٫۷ بررسی کنیم. این اولین پوسته‌ی پیش‌فرض در وردپرس است که به جای وبلاگ‌های معمولی، برای کسب‌وکارها ساخته شده است و این خیلی هیجان‌انگیز است! پس امروز می‌خواهیم به شما نشان دهیم که چگونه امتیاز کامل ۱۰۰/۱۰۰ را هم روی دسکتاپ و هم روی موبایل بگیرید. ما ابزارها و خدمات متداولی را که خیلی از سایت‌های وردپرس استفاده می‌کنند، نصب کرده‌ایم؛ چیزهایی مثل گوگل آنالیتیکس، Akismet، سئو یاهست، و غیره. ما آزمایش‌های خودمان را هم روی یک هاست اشتراکی ارزان و هم روی سایتی که از Google Cloud استفاده می کند انجام داده ایم تا به شما نشان دهیم که چقدر تفاوت بین محیط‌های میزبانی بهینه‌ی Google Cloud و اشتراکی وجود دارد.
اگرچه این سایت خیلی کوچک است، اما مبنای خوبی برای درک نحوه‌ی کار Google PageSpeed Insights است.

امتیاز ۱۰۰/۱۰۰ در Google PageSpeed Insights با هاست اشتراکی
سایت آزمایشی ما، یک سایت با وردپرس ۴٫۷ و با پوسته‌ی ۲۰۱۷  است که بر روی یک هاست اشتراکی ارزان و محبوب (آپاچی) قرار گرفته است. SSL فعال است و پلاگین‌های زیر نصب هستند.
  • Yoast SEO
  • Akismet

به علاوه گوگل آنالیتیکس نیز در بخش <body> فایل header.php  اجرا می‌شود. تنها تغییری که ایجاد کرده‌ایم، اضافه کردن یک تصویر برجسته به پست پیش‌فرض «Hello world!» است. ما این سایت را به Google PageSpeed Insights دادیم و بدون هیچ کار اضافه‌ای، امتیاز ۱۰۰/۶۹ برای دسکتاپ و ۱۰۰/۵۸ برای موبایل به دست آمد. پس حتماً لازم است چیزهایی را بهبود دهیم. اجازه بدهید تا هر یک را بررسی کنیم تا ببینیم چگونه می‌توانیم آن را اصلاح کنیم.

[تصویر:  100-score-google-pagespeed-insights-e1541922047149.jpg]

فعال کردن فشرده‌سازی
کار خود را با دسکتاپ شروع می‌کنیم، چون خیلی از اصلاحات برای موبایل هم به کار می‌آیند. اولین توصیه‌ی Google PageSpeed Insights که باید به آن عمل کنیم، هشدار فعال کردن فشرده‌سازی است.
[تصویر:  google-pagespeed-insights-enable-compres...289672.jpg]
برای حل این مشکل بر طبق سفارش گوگل باید فشرده‌سازی Gzip را فعال کنیم.
تمام مرورگرهای مدرن، از فشرده‌سازی Gzip پشتیبانی کرده و برای تمامی درخواست‌ها به صورت خودکار درباره‌ی آن مذاکره می‌کنند. فعال کردن فشرده‌سازی Gzip می‌تواند حجم پاسخ انتقالی را به میزان ۹۰% کاهش دهد، که به نوبه‌ی خود موجب کاهش چشمگیر زمان بارگیری آن منبع، کاهش مصرف داده‌ی سرویس‌گیرنده و بهبود زمان اولین نمایش صفحات شما می‌شود.
دو راه برای این کار وجود دارد. اولین و ساده‌ترین راه، استفاده از یک پلاگین کش با قابلیت فعال کردن Gzip است. مثلاً WP Rocket قواعد فشرده‌سازی Gzip را با استفاده از ماژول mod_deflate به صورت خودکار در فایل .htaccess اضافه می‌کند. W3 Total Cache هم در بخش عملکرد خود امکان فعال کردن این فشرده‌سازی را ارائه می‌دهد.
دومین راه فعال کردن فشرده‌سازی Gzip، ویرایش فایل .htaccess است. بیشتر هاست‌های اشتراکی از آپاچی استفاده می‌کنند که در آن می‌توانید به سادگی کد زیر را به فایل .htaccess خود اضافه کنید. فایل .htaccess را می‌توانید از طریق FTP در ریشه‌ی سایت وردپرس خود بیابید.
اضافه کردن کد زیر به .htaccess:



1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

[color=rgb(0 , 111 , 224)]&[color=rgb(0 , 45 , 122)]lt[/color][color=rgb(51 , 51 , 51)];[/color][color=rgb(0 , 78 , 208)]IfModule [/color][color=rgb(0 , 45 , 122)]mod_deflate[/color][color=rgb(51 , 51 , 51)].[/color][color=rgb(0 , 45 , 122)]c[/color][color=rgb(0 , 111 , 224)]&[/color][color=rgb(0 , 45 , 122)]gt[/color][color=rgb(51 , 51 , 51)];[/color]

[color=rgb(0 , 111 , 224)]  [/color][color=rgb(184 , 92 , 0)]# Compress HTML, CSS, JavaScript, Text, XML and fonts[/color]
[color=rgb(0 , 111 , 224)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]application[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]javascript[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]application[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]rss[/color][color=rgb(0 , 111 , 224)]+[/color][color=rgb(0 , 78 , 208)]xml[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]application[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]vnd[/color][color=rgb(51 , 51 , 51)].[/color][color=rgb(0 , 45 , 122)]ms[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 78 , 208)]fontobject[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]application[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]x[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 78 , 208)]font[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]application[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]x[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 45 , 122)]font[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 78 , 208)]opentype[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]application[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]x[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 45 , 122)]font[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 78 , 208)]otf[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]application[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]x[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 45 , 122)]font[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 78 , 208)]truetype[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]application[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]x[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 45 , 122)]font[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 78 , 208)]ttf[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]application[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]x[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 78 , 208)]javascript[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]application[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]xhtml[/color][color=rgb(0 , 111 , 224)]+[/color][color=rgb(0 , 78 , 208)]xml[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]application[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]xml[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]font[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]opentype[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]font[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]otf[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]font[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]ttf[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]image[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]svg[/color][color=rgb(0 , 111 , 224)]+[/color][color=rgb(0 , 78 , 208)]xml[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]image[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]x[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 78 , 208)]icon[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]text[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]css[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]text[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]html[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]text[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]javascript[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]text[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]plain[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]AddOutputFilterByType [/color][color=rgb(0 , 78 , 208)]DEFLATE [/color][color=rgb(0 , 45 , 122)]text[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]xml[/color]
 
[color=rgb(0 , 111 , 224)]  [/color][color=rgb(184 , 92 , 0)]# Remove browser bugs (only needed for really old browsers)[/color]
[color=rgb(0 , 111 , 224)]  [/color][color=rgb(0 , 45 , 122)]BrowserMatch[/color] [color=rgb(0 , 111 , 224)]^[/color][color=rgb(0 , 45 , 122)]Mozilla[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(206 , 0 , 0)]4[/color] [color=rgb(0 , 45 , 122)]gzip[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 45 , 122)]only[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 45 , 122)]text[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]html[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 45 , 122)]BrowserMatch[/color] [color=rgb(0 , 111 , 224)]^[/color][color=rgb(0 , 45 , 122)]Mozilla[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(206 , 0 , 0)]4[/color][color=rgb(51 , 51 , 51)]\[/color][color=rgb(51 , 51 , 51)].[/color][color=rgb(206 , 0 , 0)]0[/color][color=rgb(51 , 51 , 51)][[/color][color=rgb(206 , 0 , 0)]678[/color][color=rgb(51 , 51 , 51)]][/color] [color=rgb(0 , 45 , 122)]no[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 78 , 208)]gzip[/color]
[color=rgb(0 , 78 , 208)]  [/color]BrowserMatch [color=rgb(51 , 51 , 51)]\[/color][color=rgb(0 , 45 , 122)]bMSIE[/color] [color=rgb(0 , 111 , 224)]![/color][color=rgb(0 , 45 , 122)]no[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 45 , 122)]gzip[/color] [color=rgb(0 , 111 , 224)]![/color][color=rgb(0 , 45 , 122)]gzip[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 45 , 122)]only[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 45 , 122)]text[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]html[/color]
[color=rgb(0 , 78 , 208)]  [/color][color=rgb(0 , 78 , 208)]Header [/color][color=rgb(0 , 78 , 208)]append [/color][color=rgb(0 , 78 , 208)]Vary [/color][color=rgb(0 , 45 , 122)]User[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 45 , 122)]Agent[/color]
[color=rgb(0 , 111 , 224)]&[/color][color=rgb(0 , 45 , 122)]lt[/color][color=rgb(51 , 51 , 51)];[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]IfModule[/color][color=rgb(0 , 111 , 224)]&[/color][color=rgb(0 , 45 , 122)]gt[/color][color=rgb(51 , 51 , 51)];[/color]

حواستان باشد که این کد را در زیر محتوای فعلی فایل .htaccess خود اضافه کنید؛ مانند شکل زیر:

[تصویر:  add-gzip-code-e1541924262912.png]
اگر از NGINX استفاده می‌کنید، به سادگی کد زیر را به فایل nginx.conf خود اضافه کنید.
[/color]


1

2

3

4

5

[color=rgb(0 , 78 , 208)]gzip [color=rgb(0 , 45 , 122)]on[/color][color=rgb(51 , 51 , 51)];[/color]

[color=rgb(0 , 45 , 122)]gzip[/color][color=rgb(51 , 51 , 51)]_[/color]disable [color=rgb(0 , 128 , 0)]"MSIE [1-6]\.(?!.*SV1)"[/color][color=rgb(51 , 51 , 51)];[/color]
[color=rgb(0 , 78 , 208)]gzip_vary [/color][color=rgb(0 , 45 , 122)]on[/color][color=rgb(51 , 51 , 51)];[/color]
[color=rgb(0 , 78 , 208)]gzip_types [/color][color=rgb(0 , 45 , 122)]text[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]plain [/color][color=rgb(0 , 45 , 122)]text[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]css [/color][color=rgb(0 , 45 , 122)]text[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]javascript [/color][color=rgb(0 , 45 , 122)]application[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 78 , 208)]javascript [/color][color=rgb(0 , 45 , 122)]application[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]x[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 45 , 122)]javascript[/color][color=rgb(51 , 51 , 51)];[/color]
 

ابزاری مثل Check Gzip Compression می‌تواند میزان صرفه‌جویی بایت را حاصل از فعال کردن فشرده‌سازی Gzip، نشان دهد. تصویر زیر مثالی از میزان صرفه‌جویی ما در سایت آزمایشی است.

[تصویر:  gzip-compression-savings-e1541922411603.jpg]

اگر سایت خود را دوباره به Google PageSpeed Insights بدهیم، می‌بینیم که هشدار فشرده‌سازی Gzip حذف شده و امتیاز دسکتاپ ما از ۱۰۰/۶۹ به ۱۰۰/۸۰ و امتیاز موبایل از ۱۰۰/۵۸ به ۱۰۰/۶۷ افزایش یافته است.

[تصویر:  google-pagespeed-after-gzip-compression-...776699.jpg][/color]

بهینه‌سازی تصاویر
توصیه‌ی بعدی Google PageSpeed Insights که باید به آن عمل کنیم، هشدار بهینه کردن تصاویر است.پست پیش‌فرض «Hello world!» تصویری درون خود دارد که موجب این پیغام خطا شده است.

[تصویر:  pagespeed-insights-optimize-images-e1541922900352.jpg]
این هشدار بسیار مهم و مفید است. بر اساس HTTP Archive در نوامبر ۲۰۱۶، ۶۵% وزن کلی صفحات را تصاویر تشکیل می‌دهند. بهینه‌سازی تصاویر یکی از ساده‌ترین راه‌های بهبود عملکرد وب‌سایت وردپرس شماست.
دو راه برای اصلاح این مشکل دارید. اولی، استفاده از یک پلاگین بهینه‌سازی تصویر است. در حقیقت یک پلاگین می‌تواند تمامی محتوای رسانه‌ای وردپرس شما را پیمایش کرده و به یک باره آن‌ها را بهینه کند. به علاوه، هنگام بارگذاری نیز فایل‌ها را به صورت خودکار بهینه خواهد کرد. راهنمای کاملی درباره‌ی بهینه‌سازی تصاویر در وردپرس وجود دارد. چند مورد از محبوب‌ترین پلاگین‌های بهینه‌سازی تصویر عبارتند از:

این پلاگین‌ها مشکل را برطرف می‌کنند. علاوه بر این‌ها، می‌توانید تصاویر را پیش از بارگذاری در ابزاری مانند Adobe Photoshop، Gimp، یا Affinity Photo فشرده‌سازی کنید. در شکل زیر، تصویری را که باعث نمایش این هشدار می‌شود، مشاهده می‌کنید. می‌توانیم آن را از قبل با کوچک کردن و پایین آوردن کیفیت، فشرده کنیم. بهتر است که تصاویر خود را تا حد امکان کوچک کنید. این تصویر در ابتدا ۲٫۳۲ MB بوده، اما بعد از کوچک کردن و فشرده‌سازی، به ۹۹٫۳۸ KB کاهش یافته است. به خاطر داشته باشید که همیشه بهتر است تصاویر را در اندازه‌ی لازم بارگذاری کنید و برای تغییر اندازه‌ی آن‌ها به CSS اتکا نکنید. این کار سایت شما را کند می‌کند.
[تصویر:  compress-image-with-affinity-photo-e1541923064143.jpg]

اگر سایت خود را دوباره در Google PageSpeed Insights بررسی کنیم، می‌بینیم که هشدار بهینه‌سازی تصاویر حذف شده و این کار امتیاز دسکتاپ ما را از ۱۰۰/۸۰ به ۱۰۰/۸۸ و امتیاز موبایل را از ۱۰۰/۶۷ به ۱۰۰/۷۳ افزایش داده است. داریم پیشرفت می‌کنیم!

[تصویر:  google-pagespeed-insights-after-image-co...234726.jpg]

حذف جاوااسکریپت و CSS بلوکه‌کننده‌ی نمایش در محتوای بالای صفحه
توصیه‌ی بعدی Google PageSpeed Insights که باید به آن عمل کنیم، هشدار حذف جاوااسکریپت و CSS بلوکه‌کننده‌ی نمایش در محتوای بالای صفحه است.

[تصویر:  pagespeed-insights-leverage-browser-cach...308600.jpg]

زمانی که یک صفحه توسط مرورگر بارگیری می‌شود، معمولاً منابع جاوااسکریپت و CSS تا بارگیری کامل و پردازش توسط مرورگر، از نمایش صفحه جلوگیری می‌کنند. بعضی از منابع لازم است که قبل از نمایش هر چیزی بر روی صفحه، بارگیری و پردازش شوند. با این وجود، بسیاری از منابع CSS و جاوااسکریپت به صورت شرطی هستند – یعنی تنها در شرایط خاصی اعمال می‌شوند – یا شاید هم به سادگی برای نمایش محتوای بالای صفحه نیاز نباشند. برای ایجاد سریع‌ترین تجربه‌ی ممکن برای کاربران خود، باید تلاش کنید تا تمامی منابع بلوکه‌کننده‌ی نمایش را که برای محتوای بالای صفحه نیاز نیستند، حذف کنید.

گوگل در مورد جاوااسکریپت بلوکه‌کننده‌ی نمایش، سه توصیه دارد:
  • اگر جاوااسکریپت زیادی ندارید، می‌توانید آن را درون خطی (inline) کنید تا از این هشدار خلاص شوید. می‌توانید جاوااسکریپت را با پلاگین Autoptimize درون خطی کنید. به هر حال این روش فقط برای وب‌سایت‌های بسیار کوچک جواب می‌دهد. بیشتر سایت‌های وردپرس آن قدر کد جاوااسکریپت دارند که انجام دادن این کار، اتفاقاً ممکن است سایت شما را کندتر کند.
  • دومین راه، بارگیری ناهمزمان جاوااسکریپت است. در حقیقت جاوااسکریپت async، فایل را در هنگام تجزیه‌ی parse) HTML) بارگیری کرده و فقط در صورت تکمیل بارگیری فایل، تجزیه‌کننده‌ی HTML را برای اجرای خود متوقف می‌سازد.
  • سومین راه، تعویق جاوااسکریپت است. مشخصه‌ی defer همچنین فایل را در طول تجزیه‌ی HTML دانلود می‌کند، اما تنها بعد از تکمیل تجزیه آن را اجرا می‌کند. به علاوه تمامی اسکریپت‌های حاوی این مشخصه به ترتیب حضور در صفحه اجرا خواهند شد. در مورد تفاوت‌های ناهمزمانی و تعویق بیشتر بخوانید.

در این مثال می‌خواهیم کدهای جاوااسکریپت خود را Async کنیم. به این منظور از یک پلاگین رایگان به نام Async JavaScript استفاده می‌کنیم. شما می‌توانید این پلاگین را از طریق آرشیو وردپرس دانلود کنید یا آن را مستقیماً در داشبورد وردپرس خودتان در قسمت «پلاگین‌ها > افزودن پلاگین جدید» جست‌وجو کنید. این پلاگین در هنگام نگارش این مطلب، بیشتر از ۹٫۰۰۰ نصب فعال دارد و امتیاز ۲/۴ از ۵ ستاره را به خود اختصاص داده است. اساساً این پلاگین مشخصه‌ی «async» یا «defer» را به تمامی کدهای جاوااسکریپت که با استفاده از تابع wp_enqueue_script وردپرس بارگیری می‌شوند، اضافه می‌کند. توسعه‌دهنده‌ی این پلاگین یک نسخه‌ی پولی هم ارائه داده که در آن می‌توانید اسکریپت‌های مورد نظر خود را برای async یا defer انتخاب کنید.
مثال Async



1

[color=rgb(0 , 111 , 224)]&[color=rgb(0 , 45 , 122)]lt[/color][color=rgb(51 , 51 , 51)];[/color][color=rgb(0 , 78 , 208)]script [/color][color=rgb(0 , 45 , 122)]src[/color][color=rgb(0 , 111 , 224)]=[/color][color=rgb(0 , 128 , 0)]"file1.js"[/color] [color=rgb(0 , 45 , 122)]async[/color][color=rgb(0 , 111 , 224)]&[/color][color=rgb(0 , 45 , 122)]gt[/color][color=rgb(51 , 51 , 51)];[/color][color=rgb(0 , 111 , 224)]&[/color][color=rgb(0 , 45 , 122)]lt[/color][color=rgb(51 , 51 , 51)];[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]script[/color][color=rgb(0 , 111 , 224)]&[/color][color=rgb(0 , 45 , 122)]gt[/color][color=rgb(51 , 51 , 51)];[/color]

مثال Defer

[/color]
1

[color=rgb(0 , 111 , 224)]&[color=rgb(0 , 45 , 122)]lt[/color][color=rgb(51 , 51 , 51)];[/color][color=rgb(0 , 78 , 208)]script [/color][color=rgb(0 , 45 , 122)]src[/color][color=rgb(0 , 111 , 224)]=[/color][color=rgb(0 , 128 , 0)]"file1.js"[/color] [color=rgb(0 , 45 , 122)]defer[/color][color=rgb(0 , 111 , 224)]&[/color][color=rgb(0 , 45 , 122)]gt[/color][color=rgb(51 , 51 , 51)];[/color][color=rgb(0 , 111 , 224)]&[/color][color=rgb(0 , 45 , 122)]lt[/color][color=rgb(51 , 51 , 51)];[/color][color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 45 , 122)]script[/color][color=rgb(0 , 111 , 224)]&[/color][color=rgb(0 , 45 , 122)]gt[/color][color=rgb(51 , 51 , 51)];[/color]


بعد از نصب، با مراجعه به بخش تنظیمات، به سادگی جاوااسکریپت Async را فعال کنید.

[تصویر:  local-google-analytics-e1541923410704.jpg]
و حذف اسکریپت برای سایت‌های بزرگ‌تر می­تواند مفید باشد. البته می‌توانید نسخه‌ی پولی این پلاگین را نیز خریداری کنید. اگرچه ما در این مثال به این امکانات نیاز نداریم، اما اگر سایت شما کدهای جاوااسکریپت زیادی دارد، تنظیم همه‌ی آن‌ها به async یا defer به احتمال زیاد، جایی مشکلی پدید می‌آورد. در این موارد باید بررسی کنید که روی کدام کدها می‌توانید این کار را انجام دهید.

[تصویر:  async-exclusions-e1541923483253.jpg]

اگر نمی‌خواهید برای این کار از یک پلاگین استفاده کنید، راه‌های دیگری هم هست. مثلاً می‌توانید کد زیر را به فایل functions.php خود اضافه کنید.
اضافه کردن کد زیر به functions.php


[/color]
1

2

3

4

5

6

[color=rgb(255 , 128 , 0)]/*function to add async to all scripts*/

[color=rgb(128 , 0 , 128)]function[/color] [color=rgb(0 , 78 , 208)]js_async_attr[/color][color=rgb(51 , 51 , 51)]([/color][color=rgb(51 , 51 , 51)]$[/color][color=rgb(0 , 45 , 122)]tag[/color][color=rgb(51 , 51 , 51)])[/color][color=rgb(51 , 51 , 51)]{[/color]
[color=rgb(184 , 92 , 0)]# Add async to all remaining scripts[/color]
[color=rgb(128 , 0 , 128)]return[/color] [color=rgb(0 , 78 , 208)]str_replace[/color][color=rgb(51 , 51 , 51)]([/color] [color=rgb(0 , 128 , 0)]' src'[/color][color=rgb(51 , 51 , 51)],[/color] [color=rgb(0 , 128 , 0)]' async="async" src'[/color][color=rgb(51 , 51 , 51)],[/color] [color=rgb(51 , 51 , 51)]$[/color]tag [color=rgb(51 , 51 , 51)])[/color][color=rgb(51 , 51 , 51)];[/color]
[color=rgb(51 , 51 , 51)]}[/color]
[color=rgb(0 , 78 , 208)]add_filter[/color][color=rgb(51 , 51 , 51)]([/color] [color=rgb(0 , 128 , 0)]'script_loader_tag'[/color][color=rgb(51 , 51 , 51)],[/color] [color=rgb(0 , 128 , 0)]'js_async_attr'[/color][color=rgb(51 , 51 , 51)],[/color] [color=rgb(206 , 0 , 0)]10[/color] [color=rgb(51 , 51 , 51)])[/color][color=rgb(51 , 51 , 51)];[/color]

افزودن async یا defer بدون پلاگین:
[/color]
  • Async با استفاده از WordPress Enqueue
  • افزودن مشخصه‌های defer و async به جاوااسکریپت بلوکه‌کننده‌ی نمایش در وردپرس

بار دیگر سایت خود را در Google PageSpeed Insights بررسی می‌کنیم و می‌بینیم که مشکل Render-blocking جاوااسکریپت ، تصحیح شده و فقط هشدار بهینه‌سازی تحویل  (Optimize CSS delivery warning) باقی مانده است.

[تصویر:  optimize-css-delivery-e1541923597427.png]

همان‌طوری که می‌بینید، اولین چیزی که باید بهینه کنیم، فونت‌های گوگل هستند (fonts.googleapis.com) . به طور پیش‌فرض CSS بلوکه‌کننده‌ی نمایش (render-blocking) است و این شامل CSS فونت‌های وب هم می‌شود. برای تصحیح این مورد، پلاگین رایگان Disable Google Fonts را نصب می‌کنیم. همین اواخر، میلان دینیچ (Milan Dinić) سازنده‌ی این پلاگین، فونت Twenty Seventeen Libre Franklin را نیز اضافه کرد. واضح است که بعد از نصب پلاگین، فونت‌های گوگل در سایت شما نمایش داده نخواهد شد. پس بایستی به سایت فونت‌های گوگل رفته و کد جاسازی (embed) را به صورت دستی دریافت کنید. ما وزن‌های پیش‌فرض پوسته‌ی ۲۰۱۷ را انتخاب می‌کنیم.


1

2

3

4

[color=rgb(0 , 111 , 224)]&[color=rgb(0 , 45 , 122)]lt[/color][color=rgb(51 , 51 , 51)];[/color][color=rgb(0 , 78 , 208)]link [/color][color=rgb(0 , 45 , 122)]href[/color][color=rgb(0 , 111 , 224)]=[/color][color=rgb(0 , 128 , 0)]"https://fonts.googleapis.com/css?family=<span class="[/color][color=rgb(0 , 45 , 122)]collection[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 45 , 122)]drawer[/color][color=rgb(0 , 111 , 224)]-[/color][color=rgb(0 , 45 , 122)]emphasized[/color][color=rgb(0 , 111 , 224)]-[/color]code[color=rgb(0 , 128 , 0)]">Libre+Franklin:300,300i,400,400i,600,600i,800,800i</span>"[/color] [color=rgb(0 , 45 , 122)]rel[/color][color=rgb(0 , 111 , 224)]=[/color][color=rgb(0 , 128 , 0)]"stylesheet"[/color][color=rgb(0 , 111 , 224)]&[/color][color=rgb(0 , 45 , 122)]gt[/color][color=rgb(51 , 51 , 51)];[/color]

 
 
[color=rgb(0 , 111 , 224)]<[/color][color=rgb(0 , 78 , 208)]img [/color][color=rgb(128 , 0 , 128)]class[/color][color=rgb(0 , 111 , 224)]=[/color][color=rgb(0 , 128 , 0)]"size-full wp-image-737 aligncenter"[/color] [color=rgb(0 , 45 , 122)]src[/color][color=rgb(0 , 111 , 224)]=[/color][color=rgb(0 , 128 , 0)]"https://parmisoft.com/wp-content/uploads/2018/10/google-fonts-embed-e1541923663699.jpg"[/color] [color=rgb(0 , 45 , 122)]alt[/color][color=rgb(0 , 111 , 224)]=[/color][color=rgb(0 , 128 , 0)]"فونت گوگل embed"[/color] [color=rgb(0 , 45 , 122)]width[/color][color=rgb(0 , 111 , 224)]=[/color][color=rgb(0 , 128 , 0)]"700"[/color] [color=rgb(0 , 45 , 122)]height[/color][color=rgb(0 , 111 , 224)]=[/color][color=rgb(0 , 128 , 0)]"694"[/color] [color=rgb(0 , 111 , 224)]/[/color][color=rgb(0 , 111 , 224)]>[/color]



[/color]

برای مطالعه ادامه متن به ابزار Google PageSpeed Insights در بلاگ پارمیسافت مراجعه کنید.
پاسخ
#2
با تشکر مطلب مفیدی بود
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان