چگونه می توان فشرده سازی GZIP را برای سرعت بخشیدن به سایت های وردپرس فعال کرد

ساده ترین راه برای سرعت بخشیدن به سایت وردپرس شما این است که تمام منابع ناخواسته خود را از بین ببرید . دومین راه آسان برای سرعت بخشیدن به آن فشرده سازی تمام منابع مورد نظر آن است. فعال کردن فشرده سازی GZIP در وب سرور یکی از ساده ترین و کارآمدترین راه ها برای دستیابی به آن است.

همه مرورگرهای مدرن به طور پیش فرض از فشرده سازی GZIP پشتیبانی می کنند. با این حال ، برای ارائه منابع فشرده شده به کاربران خود بدون هیچ گونه گرفتگی ، باید سرور خود را به درستی پیکربندی کنید.

در این پست ، اصول فشرده سازی داده ها در وب ، فشرده سازی GZIP ، مزایای مختلف آن و نحوه استفاده از آن برای سرعت بخشیدن به سایت های وردپرسی خود در تنظیمات مختلف سرور ، را خواهید آموخت.

هیجان زده اید؟ بیایید از فشرده سازی خارج شویم!
ساده ترین راه برای سرعت بخشیدن به سایت # وردپرس: از منابع ناخواسته خلاص شوید. 2nd دومین راه آسان: همه منابع مورد نظر را فشرده کنید. ✅ یاد بگیرید که این کار را به سرعت با فشرده سازی GZIP انجام دهید ? برای توییت کلیک کنید

مبانی فشرده سازی داده در وب h2>

فشرده سازی داده ها در وب ، فرآیند کاهش حجم داده های منتقل شده توسط وب سایت ها است. بسته به نوع داده – متن ، تصاویر ، صفحه های سبک ، اسکریپت ها ، قلم ها – روش های مختلفی برای فشرده سازی داده ها وجود دارد.

An illustration of the main components of a webpage

اجزای اصلی یک صفحه وب

برای مثال ، کوچک سازی HTML ، CSS و JavaScript روشی ساده برای کاهش میزان ارسال اطلاعات توسط مرورگرها است. در اینجا ، کوچک کننده متن را با حذف نویسه های غیرضروری مانند نظرات و فضای خالی از کد منبع فشرده می کند.

در مثال زیر یک سند HTML ، سه نوع محتوا: نشانه گذاری HTML ، سبک های CSS و کد JavaScript.

هر نوع محتوا دارای نحو و معناشناسی منحصر به فرد است. به طور کلی ، این سند HTML در کل 357 نویسه دارد.

   html >
 سر >
     سبک >
    / * kinsta-banner فقط در صفحه اصلی استفاده می شود * /
    .kinsta-banner {اندازه قلم: 150٪}
    .kinsta-banner {عرض: 75٪}
  سبک >
  سر >
 بدن >
    
     div > ...   div >
    
     اسکریپت >
    kinstaScriptts ()؛ // اسکریپت های تصادفی استفاده شده در صفحه
      اسکریپت >
  بدن >
 html   کد / کد 

خواندن و پیروی از کد فوق آسان است. برای توسعه ایده آل است. با این حال ، لازم نیست مرورگر نظرات را بخواند و دارای برچسب های کاملاً فرو رفته باشد. یک کمپرسور هوشمند می تواند این سند را تجزیه و تحلیل کرده و تمام بیت های غیرضروری را از آن حذف کند.

   html 

> head > style > .kinsta-banner {font- اندازه: 150٪ ؛ عرض: 75٪} style > سر > بدن > div strong >> ... div > script > kinstaScripts ()؛ script > body strong >> html >

پس از کوچک سازی ، سند HTML فقط به 141 نویسه کاهش می یابد. این میزان از مقدار نویسه 60.50٪ پس انداز است. از نظر چشم آسان نیست ، اما این برای مرورگر مهم نیست. همچنان همان صفحه را برای کاربر نمایش می دهد.

برای استفاده از هر دو نسخه ، می توانید سند اصلی را به عنوان “نسخه توسعه” حفظ کنید ، اما همه کد را قبل از فشار دادن مستقیم آن کوچک کنید.

اکثر افزونه های عملکرد وردپرس به طور خودکار از این موارد برای شما مراقبت می کنند.

File size comparison of uncompressed vs minified jQuery

فشرده سازی اندازه پرونده از jQuery فشرده نشده در مقابل minified

به عنوان نمونه ، نسخه فشرده نشده کتابخانه jQuery 3.5.1 بیش از 3 برابر نسخه کوچک شده همان پرونده بزرگتر است.

به همین ترتیب ، همان روشهای فشرده سازی که در بالا توضیح داده شده است ، می توانند انواع دیگر محتوا مانند تصاویر ، فیلمها ، فونتها و موارد دیگر را بهینه کنند. کاهش ویژه محتوا مانند اینها اولین مرحله در بهینه سازی اندازه دارایی های متنی وب سایت شما است.

اما در فشرده سازی داده ها فقط چیزهای کوچک سازی وجود دارد. با استفاده از تکنیک های پیشرفته ریاضی ، الگوریتم های فشرده سازی داده ها می توانند اندازه داده ها را بیشتر کاهش دهند.

یکی از مشهورترین نمونه های چنین روش فشرده سازی داده ها ، GZIP است. این امکان انتقال کارآمد داده ها را فراهم می کند و به طور قابل توجهی در ایجاد اینترنت به عنوان یک رسانه ارتباطی جهانی مناسب کمک می کند.

فشرده سازی GZIP چیست؟ h2>

GZIP ، مخفف GNU Zip ، محبوب ترین روش فشرده سازی داده بدون ضرر در وب است. به شما امکان می دهد اندازه صفحات HTML ، صفحه های سبک و اسکریپت های سایت خود را کاهش دهید.

GZIP علاوه بر اینکه یک الگوریتم فشرده سازی داده است ، همچنین یک پسوند فایل ( .gz ) و یک نرم افزار مورد استفاده برای فشرده سازی / رفع فشار فایل است.

براساس الگوریتم DEFLATE است که ترکیبی از رمزگذاری LZ77 و الگوریتم های کدگذاری هافمن .

An illustration of how GZIP compression is based on the DEFLATE algorithm

فشرده سازی GZIP براساس الگوریتم DEFLATE است

کمپرسور GZIP مجموعه ای از داده های خام را گرفته و بدون فشرده سازی آنها فشرده می شود. داده های خام می تواند از هر نوع پرونده باشد ، اما GZIP با دارایی های مبتنی بر متن (به عنوان مثال HTML ، CSS ، JS) بهترین کار را می کند.

بخش بعدی نحوه کار عمیق فشرده سازی GZIP را پوشش می دهد.

چگونه GZIP داده ها را فشرده می کند h3>

A rough illustration of how GZIP compression works

تصویری خشن از نحوه کار فشرده سازی GZIP

برای شروع ، کمپرسور GZIP الگوریتم فشرده سازی LZ77 را بر روی داده های خام اجرا می کند تا زائدات را حذف کند. این الگوریتم با یافتن الگوهای مکرر در یک پنجره کشویی از پیش تعریف شده (بخش کوچکی از داده های خام) کار می کند.

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

An illustration of the LZ77 encoding algorithm

تصویری از الگوریتم رمزگذاری LZ77

در مثال بالا ، اندازه پنجره کشویی فقط 13 کاراکتر است (13 بایت). با این حال ، فشرده سازی GZIP می تواند از حداکثر اندازه پنجره کشویی 32 KB (32،768 بایت) استفاده کند. اندازه پنجره کشویی نقش اساسی در عملکرد فشرده سازی LZ77 دارد.

پس از فشرده سازی داده های خام با الگوریتم LZ77 ، کمپرسور GZIP سپس برای فشرده سازی بیشتر از الگوریتم کدگذاری هافمن استفاده می کند . این کار را با اختصاص کاراکترهایی که مرتباً کمترین بیت اتفاق می افتد انجام می دهد ، در حالی که کاراکترهای کمیاب بیشترین بیت را اختصاص می دهند.

این روش مانند روشی است که در کد مورس به کار رفته است ، در آن حروف با بیشترین زمان در زبان انگلیسی کوتاهترین توالی را می گیرند.

برای درک نحوه کار الگوریتم کدگذاری هافمن ، کلمه BOOKKEEPER را در نظر بگیرید. طول آن 10 نویسه است ، اما فقط 6 نویسه منحصر به فرد دارد. این کلمه ترکیبی خوب از حروف تک ، دو و سه گانه دارد.

تقریباً همه وب سایت ها از رمزگذاری کاراکترهای UTF-8 استفاده می کنند برای نشان دادن حروف و نمادها. هر نویسه ASCII در UTF-8 ، که همچنین شامل الفبای انگلیسی است ، از 1 بایت (8 بیت) استفاده می کند. p >

The word “BOOKKEEPER” has many repeating letters

کلمه” BOOKKEEPER “نامه های تکراری زیادی دارد

یک رشته 10 کاراکتری مانند

BOOKKEEPER کد به 10 بایت (80 بیت) حافظه نیاز دارد. می توانید ببینید که این شامل 1 نمونه از حروف B ، P ، R ، 2 نمونه از حروف است کد و کد و 3 مورد از نامه E .

الگوریتم کدگذاری هافمن از این دانش برای فشرده سازی بدون ضرر رشته استفاده می کند. این کار را با تولید یک درخت باینری با هر حرف منحصر به فرد به عنوان برگ انجام می دهد.

نامه هایی با کمترین فرکانس (به عنوان مثال B ، P ، R ) در پایین درخت قرار می گیرند ، در حالی که نامه هایی که به طور مکرر ظاهر می شوند (به عنوان مثال E ، O ، K ) در حالت ایده آل خود را در بالا می بینند.

بالاترین گره در درخت ریشه است و مقدار آن برابر با تعداد کل نویسه های رشته است.

Huffman Tree for the word “BOOKKEEPER”

درخت هافمن برای کلمه” BOOKKEEPER “

پس از تولید درخت هافمن ، به کلیه پیکان های شاخه ای سمت راست و شاخه راست به ترتیب اعداد 0 و 1 داده می شود. سپس می توانید با ردیابی مسیر ریشه به برگ و پیوستن به همه 0 ها و 1 ها کد هافمن را برای هر کاراکتر تولید کنید.

Huffman codes are unique binary codes for every character

کدهای هافمن کدهای باینری منحصر به فرد برای هر کاراکتر هستند

می توانید متوجه شوید که حروف با بیشترین فرکانس دارای کد هافمن با کمترین اندازه بیت هستند.

توجه: الگوریتم کدگذاری هافمن می تواند کدهای باینری جایگزین را با استفاده از یک استراتژی مرتب سازی متفاوت برای کاراکترهای با همان فرکانس ها تولید کند. با این حال ، اندازه کل رشته کدگذاری شده همان ثابت خواهد بود.

An 80 bits word encoded as a 25 bits string

80 کلمه بیت به عنوان یک رشته 25 بیتی رمزگذاری شده است

این میزان 68.75٪ حافظه مورد نیاز برای ذخیره کلمه اصلی است.

استفاده از درخت هافمن با قرارداد 0 / 1 کدهای دودویی تولید می کند که ویژگی پیشوند . این تضمین می کند که کد هافمن هر کاراکتر خاص پیشوند کد شخصیت دیگری نیست ، رمزگشایی رشته رمزگذاری شده با استفاده از درخت هافمن را آسان می کند. این نقش اصلی را در سرعت فشرده سازی GZIP بازی می کند.

درست مثل کلمه بالا ، کمپرسور GZIP از الگوریتم کدگذاری هافمن برای بهینه سازی بیشتر tuples تولید شده توسط الگوریتم LZ77 استفاده می کند. این منجر به پرونده های بسیار فشرده با پسوند .gz می شود.

اگر می خواهید در مورد نحوه کار GZIP بیشتر بدانید ، برای یک مرور سریع به این ویدئو مراجعه کنید .

فشرده سازی GZIP چقدر خوب است؟ h3>

به طور معمول ، GZIP نسبت فشرده سازی در پرونده های کوچک حدود 70٪ را به دست می آورد ، اما برای دارایی های بزرگتر مبتنی بر متن می تواند تا 90٪ برسد.

Comparison of GZIP compression ratios for various CSS and JS libraries

نسبت فشرده سازی GZIP برای برخی از کتابخانه های محبوب CSS و JS

در جدول بالا می بینید که فشرده سازی پرونده های کوچک شده با GZIP می تواند اندازه آنها را بیشتر کاهش دهد.

توجه: می توانید هر نوع پرونده را با GZIP فشرده کنید ، اما برای دارایی هایی که قبلاً با روش های دیگر فشرده شده اند (به عنوان مثال تصاویر ، فیلم ها) ، به هیچ وجهی صرفه جویی نخواهد شد. حتی گاهی ممکن است اندازه پرونده را افزایش دهد.

قدرت یک الگوریتم فشرده سازی فقط به نسبت فشرده سازی آن بستگی ندارد ، بلکه همچنین به سرعت و کارآیی فشرده سازی و فشرده سازی داده ها بستگی دارد. در اینجا GZIP برای بیشتر موارد استفاده از برتری برخوردار است.

از آنجا که GZIP با استفاده از الگوریتم جریانی سریع از حالت فشرده خارج می شود ، برای پروتکل های وب که سرعت ضروری است بسیار مناسب است. بعلاوه ، GZIP از حداقل منابع برای فشرده سازی و از بین بردن داده ها استفاده می کند ، و آنها را برای سرورها و کلاینت ها ایده آل می کند.

Compression performance of brotli vs bzip2 vs GZIP vs xz (Source: OpenCPU)

عملکرد فشرده سازی brotli vs bzip2 vs GZIP vs x z (منبع: OpenCPU)

نمودارهای بالا عملکرد فشرده سازی الگوریتم های فشرده سازی brotli ، bzip2 ، gzip و xz را مقایسه می کنند. GZIP در آزمون نسبت فشرده سازی با کمی اختلاف از دست می رود ، اما برای سرعت فشرده سازی و فشار فشرده ، کاملاً رقابت را شکست می دهد.

با نگاهی به نمودار سرعت فشرده سازی ، می توان نتیجه گرفت که GZIP برای فشرده سازی در زمان واقعی در سرورهای HTTP و سایر جریان های داده در وب ایده آل است. با در نظر گرفتن همه نکات مثبت آن در پیشرفت وب ، IETF GZIP را تصویب کرد به عنوان یکی از سه قالب استاندارد فشرده سازی در HTTP / 1.1.

توجه: انتزاعی از کتابخانه فشرده سازی GZIP به نام zlib در بسیاری از سیستم عامل های معروف (Linux ، macOS ، iOS) و کنسول های بازی مدرن (PlayStation 4، Wii) استفاده می شود U ، Xbox One). همچنین در قالب فایل PNG بدون فشرده سازی برای فشرده سازی تصاویر استفاده می شود.

6 مزیت فشرده سازی GZIP h3>

بیایید مهمترین مزایای فشرده سازی GZIP را از نزدیک بررسی کنیم.

نسبت فشرده سازی مناسبی ارائه می دهد

همانطور که قبلاً بحث شد ، GZIP بهترین نسبت فشرده سازی را نسبت به رقبا ندارد. اما خیلی هم دور از آنها نیست. به طور معمول ، این می تواند به شما کمک کند تا اندازه منابع مبتنی بر متن را بین 70-90٪ کاهش دهید.

فشرده سازی و فشرده سازی فوق العاده سریع h4>

برای سرعت فشرده سازی و فشرده سازی داده ها ، GZIP برنده اصلی است. برای فشرده سازی در پرواز در سرورهای HTTP و سایر جریان های داده بسیار مطلوب است.

به حافظه بسیار کمی نیاز دارد h4>

GZIP کمترین ردپای حافظه از خود به جای می گذارد و این امر برای سرورها و سیستم هایی با ظرفیت حافظه محدود مناسب است. از این رو ، حتی در ارزان ترین ارائه دهنده های میزبانی وب پشتیبانی می کنید.

حتی در بدترین موارد نیز گسترش نمی یابد h4>

الگوریتم های فشرده سازی داده های بدون ضرر مانند GZIP محدودیت سختی دارند که فراتر از آن نمی توانند داده ها را فشرده کنند.

به طور معمول ، این اتفاق می افتد زمانی که منبع به خوبی فشرده شده باشد ، یا اگر ریز باشد و هزینه اضافه کردن دیکشنری GZIP بالاتر از صرفه جویی در فشرده سازی باشد. می توانیم این پدیده را به مفهومی بنام رمزگذاری آنتروپی نسبت دهیم. GZIP در برابر این اثر بسیار مقاوم است.

استفاده رایگان و منبع آزاد h4>

GZIP در درجه اول به عنوان جایگزین منبع آزاد رایگان برای فشرده سازی ثبت شده ایجاد شد برنامه ای که در سیستم های اولیه یونیکس استفاده می شود. بنابراین ، هیچ اختراعی ثبت نشده است و هر کسی می تواند از آن استفاده کند.

از پشتیبانی جهانی برخوردار است h4>

مطابق با W3Techs ، فشرده سازی GZIP توسط 82٪ از همه استفاده می شود وب سایت هایی که آنها ردیابی می کنند ، و آن را به پرکاربردترین الگوریتم فشرده سازی در سراسر وب تبدیل می کنند.

GZIP تقریباً توسط همه سرورها و سرویس گیرندگان پشتیبانی می شود. مهم نیست که سایت خود را در کدام سرور میزبانی می کنید ، با فعال کردن GZIP در آن می توانید سرعت آن را افزایش دهید.

هشدارهای GZIP در ابزار تست سرعت وب سایت h3>

در کنار کوچک سازی ، فعال کردن GZIP یکی از ساده ترین و م بهینه سازی سرعت است که شما می تواند در وب سایت شما پیاده سازی کند.

همچنین یکی از ساده ترین راه ها برای بهینه سازی وردپرس است. با وجود این ، بسیاری از سایت های وردپرس هنوز از آن استفاده نمی کنند.

هنگام بازدید از یک وب سایت ، مرورگر شما با بررسی عنوان پاسخ محتوا-کدگذاری: gzip بررسی می کند آیا وب سرور GZIP را فعال کرده است یا خیر. اگر هدر وجود داشته باشد ، فایلهای فشرده شده را بازیابی می کند ، آنها را از حالت فشرده خارج کرده و سپس پرونده های کوچکتر را به طور خودکار برای شما ارائه می دهد.

The “content-encoding: gzip” response header

هدر پاسخ “content-encoding: gzip” در Chrome DevTools

اگر مرورگر هدر پاسخ GZIP را تشخیص ندهد ، پرونده های فشرده نشده را بارگیری می کند. در بیشتر موارد ، تفاوت در سرعت بارگذاری صفحه می تواند چندین ثانیه باشد. از این رو ، اگر GZIP را فعال نکنید ، هشدارهایی را در ابزار تست سرعت وب مشاهده خواهید کرد.

هشدار GZIP در Google PageSpeed ​​Insights / فانوس دریایی h4>

Google PageSpeed ​​Insights درصورت عدم هشدار فشرده سازی متن را در وب سایت خود فعال کنید.

توجه: Google PageSpeed ​​Insights و Google Lighthouse دو ابزار تست عملکرد وب سایت جداگانه بودند. آنها تا سال 2018 به طور مستقل از یکدیگر کار کردند ، زمانی که Google PageSpeed ​​Insights برای استفاده از Lighthouse به عنوان موتور تجزیه و تحلیل خود. از این رو ، PageSpeed ​​Insights و Lighthouse اکنون یکی هستند.

“Enable text compression” warning in Google PageSpeed Insights

هشدار” فعال سازی فشرده سازی متن “در Googl e PageSpeed ​​Insights

در سایت نمونه بالا ، فشرده سازی منابع مبتنی بر متن می تواند وزن صفحه را بیش از 78 78

کاهش دهد و زمان بارگذاری صفحه را به 2.1 ثانیه افزایش دهد.

توجه: PageSpeed ​​Insights به عناوین پاسخ بازگشتی توسط سرور به مرورگر شما متکی است. گاهی اوقات ، حتی اگر فشرده سازی GZIP را فعال کرده باشید ، ممکن است هشدار غلطی را نشان دهد. این ممکن است به دلیل اجرای تست سرعت در دستگاهی باشد که از یک سرور پراکسی متوسط ​​یا یک نرم افزار امنیتی استفاده می کند. آنها ممکن است در بارگیری پرونده های فشرده شده از سرورهای خارجی تداخل ایجاد کنند.

هشدار GZIP در GTmetrix h4>

GTmetrix اگر وب سایت شما از منابع فشرده متنی استفاده نمی کند هشدار نشان می دهد . مانند Google PageSpeed ​​Insights ، این نیز به شما پس انداز بالقوه ای را که می توانید بدست آورید نشان می دهد.

“Enable compression” warning in GTmetrix

بدین ترتیب،

برنامه / json

منبع:
https://kinsta.com/blog/enable-gzip-compression/.

دیدگاهتان را بنویسید