یکی دیگه از خطاهای رایج که در تست سرعت سایت با جی تی متریکس نمایش داده میشه با عنوان Reduce cookie size هست. همونطور که از معنای لغوی این خطا برداشت میشه از ما خواسته میشه که اندازه و تعداد کوکیهای سایت رو کاهش بدیم. کوکیها درخواستهایی هستند که به صورت HTTP در اولین ورود به هر سایتی در مرورگر ذخیره میشن که برای اهداف گوناگونی ازشون استفاده میشه. بیشترین استفاده برای کوکیها جهت احراز هویت هست، اگر دقت کرده باشید موقع ورود به وردپرس گزینه تحت عنوان مرا به خاطر بسپار وجود داره که اگه تیک این گزینه رو بزنید بعد از بستن پنجره مرورگر اگر به سایت وارد شده باشید همچنان در حالت لاگین باقی میمونید، اما اگه تیک این گزینه رو فعال نکنید، بعد از بستن مرورگر مجددا باید فرم ورود رو پر کنید و وارد سایت بشید.
در این آموزش به نحوه برطرف کردن خطای Reduce cookie size در Yslow جی تی متریکس میپردازم که با استفاده ازش میتونید درخواستهای کوکی سایت که در مرورگر کاربران ذخیره میشه رو بهینه سازی کنید. کوکیهایی که در مرورگر کاربران ذخیره میکنید باعث کاهش تعداد درخواست HTTP سایت میشن، اما در مقابل حالتی که پیش میاد اینه که اگر تعداد کوکی هم بالا باشه باعث به وجود اومدن خطای Make fewer HTTP requests خواهند شد.
کوکیها علاوه بر اطلاعات احراز هویتی قادر هستند اطلاعاتی رو در خودشون ذخیره کنند که بیشترین نمونهها شامل اطلاعات بانکی، رمزهای ورود، اطلاعات ورود به هر سایت و… میشه. اما اگه اگه این سوال براتون پیش اومده که پس چرا اطلاعات کارت بانکی شما در درگاه پرداخت ذخیره نمیشه بخاطر این هست که کوکی در درگاههای بانکی به منظور افزایش امنیت و کاهش خطر هک حسابهای بانکی به صورت کش شده نیست و ذخیره نمیشه.
کوکیها درخواستهای HTTP رو تحت Header بین مرورگر و سرور رد و بدل میکنند که اگه بتونیم حجم این کوکیها رو کمتر کنیم و علاوه بر این هم با حذف کوکیهایی که بهشون ممکنه نیازی نداشته باشیم، اقدام به بهینه سازی کوکیهای سایت بکنیم. کارهایی مثل جلوگیری کردن از حالت کوکی در فایلهای استاتیک میتونه گزینه خوبی باشه که در آموزش بهبود cookie free domains در وردپرس به معرفی یکی از این نمونهها پرداختم. برای بهینه سازی کوکی در سایت میتونید دقیقا مطابق توضیحاتی که تو آموزش رفع خطای Enable gzip compression در GTmetrix توضیح دادم عمل کنید. که در ادامه به معرفی چند راهکار برای بهینه سازی کوکیها در سایت میپردازم.
1. کاهش حجم و درخواست کوکی با Gzip
همونطور که در بالا هم اشاره کردم کوکیها به صورت درخواستهای HTTP هستند که در Header مرورگر اجرا میشن و ممکنه برای هر درخواستی این کار انجام بگیره و به صورت کوکی ذخیره بشن. این کار میتونه هم روی فایلهای استاتیک انجام بگیره و هم اینکه میتونه روی سایر درخواستها که مربوط به پردازش داده هستند صورت بگیره. اگه درخواستها مربوط به فایلهای استاتیک باشه میتونید به کمک کش کردن این درخواستها و همچنین استفاده از قابلیت فشرده سازی حجم کوکی رو کمتر کنید.
یکی از راههای فشرده سازی استفاده از Gzip هست که میتونید به میزان قابل توجهی حجم کوکی رو کمتر کنید. برای این منظور اگر از هاست سی پنل استفاده میکنید با اضافه کردن کدهای زیر به فایل htaccess. میتونید حجم کوکیهایی که به صورت استاتیک هستند رو کمتر کنید.
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
اما اگر از هاست دایرکت ادمین استفاده میکنید استفاده از کد زیر میتونه برای فعال کرده قابلیت Gzip گزینه بهتری باشه که روی درخواستهای کوکی هم تاثیر گذار هست.
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
2. استفاده از Cookie Free Domains
در این روش برای افزایش سرعت سایت با استفاده از کوکی دامنه، به صورتی عمل میکنیم که کلیه فایلها را از دامنه و یا ساب دامنه دیگه دریافت کنیم تا سرعت بارگذاری فایلهای ثابت افزایش پیدا بکنه. اگر در gtmetrix، وبسایت خودتونو تست کرده باشید، احتمالا به بخش Use cookie-free domains بر خوردید که مشخص میکنه تا چه میزان شما از کوکیها برای رد و بدل کردن دادههای سایت توسط زیر دامنه و یا دامنه دیگه استفاده میکنید.
برای استفاده از cookie-free domains در وردپرس ابتدا باید یک ساب دامنه در سایت خودتون ایجاد کنید. اگر با نحوه ساخت زیر دامنه آشنایی ندارید میتونید از آموزش نحوه ساخت ساب دامین در هاست سی پنل استفاده کنید. بنابراین بعد از ورود به هاست خودتون به منوی ساب دامنهها مراجعه کرده و سپس یک ساب دامنه با نام دلخواه خودتون ایجاد کنید و مسیر اونو روی public_html/wp-content تنظیم کنید. در اینجا من قصد دارم تا از ساب دامنه CDN برای این کار استفاده کنم.
حالا بعد از اینکه ساب دامنه شما برای وردپرس در هاست ساخته شد به مسیر File Manager در هاست خودتون مراجعه کنید و سپس به مسیر public_html در هاست سی پنل مراجعه کنید.
بعد از اینکه وارد مسیر public_html در هاست سی پنل شدید باید به دنبال فایل wp-config.php وردپرس بگردید و بعد از اینکه فایل را پیدا کردید روی اون راست کلیک کرده و گزینه Edit را انتخاب کنید تا به صفحه ویرایش فایل هدایت شده و در نهایت کدهای زیر را در مکان مناسبی از این فایل قرار دهید.
define("COOKIE_DOMAIN", "www.mizbanfa.net");define("WP_CONTENT_URL", "http://cdn.mizbanfa.net");define("WP_PLUGIN_URL", "http://cdn.mizbanfa.net/plugins");
دقت کنید که قبل از ایجاد هر گونه تغییری در فایلهای هسته وردپرس یک نسخه کپی از اون داشته باشید تا در صورت بروز مشکل و خطایی سریعا با جایگزین کردن فایل اصلی بتونید مشکل را برطرف کنید. در کد بالا دقت کنید که اگر اقدام به نصب SSL در وردپرس کردید به جای http میبایست از https برای آدرس دهی خودتون استفاده کنید. حالا که آدرس دامنه خودتون را وارد کردید فایل را ذخیره کنید.
بعد از این مرحله حالا باید آدرس فایلهای خودتون رو که در سایت استفاده کردید به آدرسی که روی ساب دامنه قرار داره تغییر بدین که برای این مورد پیشنهاد میکنم از آموزش جستجو و جایگزینی کلمات در وردپرس استفاده کنید و آدرس هر فایلی که داخل مطالب ازش استفاده میکنید رو روی ساب دامنه تنظیم کنید.
امیدوارم این آموزش هم مورد توجه و پسند شما قرار گرفته باشه و با استفاده از اون تونسته باشید نسبت به رفع خطای Reduce cookie size در YSlow جی تی متریکس اقدام کنید. در صورتی که در رابطه با این آموزش سوال یا مشکلی داشتید در بخش دیدگاهها اعلام کنید تا در کوتاهترین زمان ممکن پاسخگوی شما باشم.