بررسی خطای Reduce cookie size در GTmetrix و نحوه حل آن
احتمالا برای شما هم پیش آمده که عکسها و کدهای سایت را جامعا بهینه کردهاید، اما GTmetrix همچنان هشدار افت سرعت میدهد. در چنین شرایطی، کوکیهای سنگینی که همراه با هر درخواست مرورگر بین کاربر و سرور جابهجا میشوند میتوانند از دلایل افت سرعت باشند.
خطای Reduce cookie size در GTmetrix دقیقا به همین مشکل اشاره دارد. وقتی حجم کوکیها از حد استاندارد فراتر برود، پهنای باند بیهوده اشغال شده و زمان پاسخدهی سرور بالا میرود. در این مقاله از بخش آموزش سئو در بلاگ پارسپک، دلایل وقوع این خطا را ارزیابی میکنیم و فرایند رفع آن را با راهکارهای فنی و سرراست آموزش میدهیم تا سرعت سایت خود را به حداکثر برسانید.
برای درک این خطا، کافی است بدانید کوکیها فایلهای متنی کوچکی هستند که تبیینات کاربر را در مرورگر ذخیره میکنند. زمانی که کاربر سایت شما را باز میکند، مرورگر این کوکیها را همراه با درخواستهای شبکه به سمت سرور میفرستد.
طبق استانداردهای وب، مجموع حجم این کوکیها نباید بیشتر از ۴ کیلوبایت باشد. وقتی حجم کوکیها از این مقدار فراتر برود، درخواستها سنگین شده، زمان پاسخدهی سرور بالا میرود و خطای Reduce cookie size روی صفحه جیتیمتریکس ظاهر میشود. اما چه چیزی باعث این رشد حجم غیرطبیعی میشود؟ دلایل اصلی شامل موارد زیر است:
اگر هنوز بهطور دقیق نمیدانید که GTMetrix چیست و چه کاربردی دارد، مقاله زیر را بخوانید:
GTMetrix چیست؟
برای رفع این هشدار و نزول حجم هدر درخواستهای HTTP، پنج راهکار تخصصی و مرحلهبهمرحله وجود دارد که بر پایه ساختار وبسایت خود میتوانید آنها را پیادهسازی کنید.
پیش از هر اقدام پیچیدهای، باید کوکیهای فعال وبسایت را پایش کرده و موارد اضافه را حذف کنید:
وبسایت خود را در مرورگر باز کرده و کلید F12 را فشار دهید تا ابزار Developer Tools باز شود.
به تب Application در مرورگر کروم یا Storage در فایرفاکس بروید.
از منوی سمت چپ، بخش Cookies را باز کرده و دامنه وبسایت خود را انتخاب کنید.
جدول کوکیها شامل نام، مقدار و حجم را ارزیابی کنید. کوکیهای سنگین یا مواردی که توسط افزونههای بلااستفاده ایجاد شدهاند را شناسایی کنید.
کدهای مربوط به این کوکیها را در سمت سرور غیرفعال کرده یا افزونههای اضافه را حذف کنید.
یکی از معتبرترین راهکارها برای جلوگیری از ارسال کوکیها همراه فایلهای رسانهای، ایجاد یک دامنه یا سابدامنه مجزا است:
در پنل مدیریت هاست مانند cPanel یا DirectAdmin، یک سابدامنه بهروز ایجاد کنید.
مسیر این سابدامنه را به پوشه فایلهای رسانهای وبسایت مانند پوشه wp-content/uploads در وردپرس متصل کنید.
کدهای زیر را به فایل wp-config.php اضافه کنید تا دامنه اصلی از سابدامنه استاتیک تفکیک شود:
define('COOKIE_DOMAIN', 'www.example.com');
define('WP_CONTENT_URL', 'http://static.example.com/wp-content');
نکته:
کاربرانی که از CDN استفاده مینمایند، باید تنظیمات Strip Cookies را فعال کنند تا سرورهای لبه (Edge Servers) به صورت خودکار هدر کوکی را از فایلهای استاتیک حذف کنند.
دادههای ذخیرهشده در LocalStorage برخلاف کوکیها، همراه درخواستهای HTTP به سرور ارسال نمیشوند و پهنای باند شبکه را اشغال نمیکنند.
کدهای جاوا اسکریپت سایت که از document.cookie برای ذخیره دادهها موقت استفاده میکنند را پیدا کنید.
ساختار کد را به LocalStorage تغییر دهید:
// روش قدیمی با استفاده از کوکی
document.cookie = "user_theme=dark; path=/";
// روش بهینه با استفاده از LocalStorage
localStorage.setItem('user_theme', 'dark');
هنگام نیاز به این دادهها در کلاینت، مقدار را مستقیما از حافظه محلی مرورگر بخوانید.
اگر با خطاهای دیگری در GTmetrix مواجه میشوید، مقاله زیر را بخوانید:
رفع خطای Leverage Browser Caching در GTmetrix
تنظیم نامناسب پارامترهای Domain و Path باعث میشود مرورگر، کوکیها را در صفحاتی ارسال کند که اصلا نیازی به آنها نیست.
setcookie("user_session", "data_value", [
'expires' => time() + 3600,
'path' => '/account/',
'domain' => 'example.com',
'secure' => true,
'httponly' => true,
'samesite' => 'Lax'
]);
۵. مدیریت نشستها (Session Management)
بهترین راهکار این است که دادههای کاربر در سرور ذخیره شوند و تنها یک شناسه (ID) کوتاه در کوکی مرورگر قرار گیرد.
برای آشنایی با سایر ابزارهای کاربردی برای تست سرعت وبسایت، مقاله زیر را بخوانید:
ابزارهای تست سرعت سایت
رفع خطای Reduce cookie size نقش مهمی در نزول حجم درخواستهای شبکه و صعود چشمگیر سرعت بارگذاری وبسایت دارد. با ایجاد دامنه بدون کوکی برای فایلهای استاتیک، انتقال دادهها به LocalStorage و محدود کردن مسیر کوکیها، میتوانید امتیاز جیتیمتریکس سایت خود را ارتقا دهید.
این خطا زمانی رخ میدهد که مجموع حجم کوکیهای ارسالشده در هدر درخواست HTTP بیش از حد مجاز (معمولا بالای ۴ کیلوبایت) باشد و باعث کندی پاسخدهی سرور شود.
بله، فایلهای استاتیک (مثل عکسها و فونتها) نیازی به احراز هویت ندارند. ارسال کوکی همراه آنها فقط باعث مصرف پهنای باند و صعود تاخیر میشود.
کافی است یک سابدامنه برای فایلهای رسانهای خود بسازید و با تعریف ثابت COOKIE_DOMAIN روی دامنه اصلی در فایل wp-config.php، جلوی ارسال کوکیها به سابدامنه را بگیرید.
