تا به حال از ابزارهای آنلاین تست سرعت وبسایت استفاده کردهاید؟ قطعا گذرتان به یکی از این ابزارها خورده است.
برای مثال ابزارهایی Gtmetrix، Pingdom و… کل وبسایت را آنالیز میکنند و در یک گزارش به ما میگویند که چه چیزهایی به درستی کار میکنند و کجای کار نیاز به اصلاح دارد. در حین استفاده از این ابزار ممکن است با خطایی به نام use cookie-free domains مواجه شوید.
HTTP cookie دیتاهایی هستند که از سمت صفحات وب برای مرورگر کاربر ارسال میشوند. این دیتاها زمانی که کاربر در حین بازدید از یک وبسایت است در مرورگر کاربر ذخیره میشوند. این دیتاها بعدها در حین بازدید مجدد یک آدرس برای سرور فرستاده میشوند و اطلاعات مربوط به کاربر را یادآوری میکنند.
دامنه بدون کوکی یا همان cookie-free domain چیست؟ چطور و چرا باید از دامنه بدون کوکی استفاده کنید؟ در این مطلب از استودیو بهتر به آموزش استفاده از دامنه بدون کوکی در وردپرس میپردازیم، پس همراه ما باشید.
دامنه بدون کوکی چیست؟
خب، قبل از اینکه سراغ آموزش استفاده از دامنه بدون کوکی در وردپرس برویم، ابتدا باید ببینیم که دامنه بدون کوکی چیست؟ دامنه بدون کوکی در واقع دامنهای است که دستورات ذخیره کوکیهای مربوط به سایت را به مرورگر کاربر ارسال نمیکند.
وبسایتها عموما دارای برخی اطلاعات استاتیک هستند که بیشتر مواقع تغییری نمیکنند. از تصاویر گرفته تا فایلهای CSS و جاوا اسکریپت.
به دلیل اینکه این اطلاعات عموما یکسان هستند، نیازی نیست که به عنوان کوکی در مرورگر کاربر ذخیره شوند. پس میتوان با تنظیم دامنهای که از کوکی استفاده نمیکند تعداد درخواستهایی که از سمت کاربر به سرور ارسال میشود را کاهش داد. این کار مزیتهای زیادی به همراه دارد.
این سرعت و عملکرد میتواند در جای دیگری متمرکز شود. فکر میکنید دلیلی اصلی این کار چیست؟ خب هدف اصلی این استراتژی بهبود عملکرد وبسایت است. بله درست متوجه شدهاید با کاهش درخواستهای مربوط به کوکیها سرور میتواند به درخواستهایی که الویت بیشتری دارند بهتر پاسخ دهد.
آموزش استفاده از دامنه بدون کوکی در وردپرس
تا به اینجای کار فقط متوجه شدهاید که دامنه بدون کوکی چیست و چرا باید از آن استفاده کنید. به طور کلی استفاده از دامنههای بدون کوکی دو مزیت اصلی دارد: 1- کاهش ترافیک شبکه 2- کاهش زمان بارگذاری برای محتوای استاتیک
اما الان وقت آن است که با روش استفاده از دامنه بدون کوکی در وردپرس آشنا شوید. شاید استفاده و تنظیم دامنه بدون کوکی در وردپرس کار سختی به نظر برسد. اما اصلا این طور نیست و فقط باید همه چیز را طبق دستور العملها انجام دهید.
مطمئنا شبیه به تمامی آموزشهایی که تا کنون در استودیو بهتر به آنها پرداختیم برای استفاده از دامنه بدون کوکی در وردپرس هم روشهایی متعددی وجود دارد. برای مثال، استفاده از CDN یا استفاده از یک دامنه جدا. در این جا سعی میکنیم روشهای کارآمد را بررسی کنیم.
به این نکته دقت کنید که اگر دامنه اصلی شما با تنظیمات کوکیها ست شده باشد تمامی subdomainها هم دارای همین تنظیمات خواهند بود. خب، واضح است برای اینکه از دامنه بدون کوکی استفاده کنید باید یک دامنه جدا برای دریافت تمامی اطلاعات استاتیک کوکیها تهیه کنید.
سوال اینجاست که چطور از دامنه بدون کوکی در وردپرس استفاده کنید؟
- قدم اول این است که یک subdomain، برای مثال static.yourwebsite.com درست کنید و تمامی دیتای استاتیک وبسایت را در آن تحویل بگیرید.
- زیر دامنه جدیدی که ساختهاید را به پوشه wp-content در هاستتان هدایت کنید. اگر از کاربران cPanel هستید باید طبق تصویر زیر document root را به public_html/wp-content تغییر دهید.
- از هاستتان به دنبال فایل wp-config.php باشید و دستورات زیر را به آن اضافه کنید یا اگر دستورات موجود هستند آن را ویرایش کنید:
define("WP_CONTENT_URL", "http://static.yourwebsite.com");
define("COOKIE_DOMAIN", "www.yourwebsite.com");
- در مرحله بعدی باید تمامی آدرس پستها را به subdomain جدید ریدارکت کنید. برای این کار کافی است تا در SQL Database دستور زیر را اجرا کنید:
UPDATE wp_posts SET post_content = REPLACE(post_content,'www.yourwebsite.com/wp-content/','static.yourwebsite.com/')
همین، با طی کردن این مراحل میتوانید به راحتی دامنه کوکی و subdomain محتوای استاتیک وبسایت خود را تنظیم کنید. سپس با خیال راحت محتوای استاتیک را بدون اینکه شامل کوکی باشد دریافت کنید.
خب، روش دیگر استفاده از NGINX است. اگر به دنبال این هستید که در سرور خودتان دیتای استاتیک را دریافت کنید اولین قدم این است که یک دامنه بدون کوکی تهیه کنید.
قدم بعدی این است که دامنه جدید را به سروری که دامنه اصلی در آن قرار دارد هدایت کنید.
maindomain.com A 11.22.33.44 static.maindomain.com A 11.22.33.44
دامنه اول همان دامنه اصلیتان است و همان طور که مشخص است دامنه دوم مربوط به دادههای استاتیک میباشد.
حال وقت آن است که تنظیمات فایل ngix.conf را دستکاری کنید. این قطعه دستورات را به فایل ngix.conf اضافه کنید:
server {
listen ip:80;
server_name maindomain.com;
root /srv/http/nginx/ maindomain.com;
access_log logs/ maindomain.com.access.log;
location / {
index index.html;
charset utf-8;
}
}
}
server {
listen ip:80;
server_name static.maindomain.com;
root /srv/http/nginx/maindomain.com;
location / {
if ($request_filename ~ "\.(jpg|css|gif|png|swf|ico|mp3)$") {
break;
}
return 404;
}
}
قدم آخر این است که تصاویر وبسایت را از دامنه دوم یعنی static.maindomain.com بارگذاری کنید. برای این کار نیاز است که به دامنه دادههای استاتیک رفرنس دهید.
تصویر اولیه:
<img src="/images/testimage.png" />
تصویر ارجاع داده شده:
<img src="https:// static.maindomain.com/images/testimage.png" />
حال زمانی که درخواستی برای یک تصویر داشته باشید این تصویر از دامنه static.maindomain.com فراخوانده میشود.
استفاده از دامنه cookie-free در کنار CDN
استفاده از CDN روش مناسب دیگری برای حل مشکل دامنه بدون کوکی است. اکثر CDNها این قابلیت را دارند تا کوکیها را نادیده بگیرند. البته که ممکن است انتخاب CDN مناسب کار سختی باشد. همان طور که میدانید هر CDN قابلیتها و امکانات متفاوتی دارد. پس همه نمیتوانند گزینه خوبی برای مشکلتان باشند.
ما کاری به این نداریم که هر CDN ممکن است چه مشکلاتی را به همراه داشته باشد. در اینجا یک CDN جایگزین و مناسب که به کارتان میآید را معرفی میکنیم. پیشنهاد ما این است به سراغ KeyCDN بروید. برای استفاده از این CDN در وبسایت وردپرسی خود میتوانید از افزونه آن استفاده کنید. روش کار به این صورت است که:
1. اولین کاری که باید انجام دهید این است که به وبسایت رسمی KeyCDN بروید و یک حساب کاربری ایجاد کنید. این سرویس ۱ ماه خدمات رایگان به کاربران خود ارائه میدهد. بعد از اینکه از این سرویس راضی بودید میتوانید نسبت به خرید آن اقدام کنید.
2. از وبسایت رسمی وردپرس افزونه CDN enabler plugin را دانلود کنید و آن را نصب و فعال کنید.
3. از طریق داشبورد KeyCDN یک Pull – Zone جدید ایجاد کنید.
4. آدرس مربوط به Zoneای که ایجاد کردید را کپی کنید و آن را در افزونه وردپرس جایگذاری کنید.
در اینجا باید URL کپی شده را جایگزین کنید:
- بعد از انجام این کارها یکبار کش وبسایت خود را پاک کنید.
این تمام کاری بود که باید انجام میدادید. برای اینکه ببینید مراحل را به درستی طی کردهاید کافی است یکبار دیگر با استفاده از ابزارهای تست وبسایت خود را آنالیز کنید. در اینجا تفاوت را متوجه میشوید.
Gtmetrix همچنان نشان میدهد که دامنه Cookie-free نیست
یکی از مشکلاتی که اکثر کاربران با آن مواجه میشوند دریافت خطای Cookie-free در ابزار Gtmetrix است، حتی زمانی که روشهای از بین بردن آن را طی کردهاند. پس مشکل از کجاست؟
خب، اگر که دو گزینه Strip Cookies و Cache cookies را در KeyCDN فعال کرده باشید، همانطور که در تصویر زیر میبینید، در نتیجه Gtmetrix در بخش YSlow هنوز هم پیغام خطا دریافت میکنید. این به دلیل شرایط false-positive ابزار آنالیز است.
همان طور که در بالا اشاره کردیم زمانی که کوکیها را بر روی دامنه اصلی yourwebsite.com تنظیم کنید، تمامی subdomainها هم شامل کوکیها میشوند. این یعنی URL دستی CDN هم شامل کوکیهاست. در صورتی که تنها از یکی از آنها استفاده میکنید.
اگر گزینه strip cookies را فعال کرده باشید خطای YSlow اشتباه است. در واقع YSlow توجه نمیکند که این گزینه فعال است و همچنان به نشان دادن خطا ادامه میدهد.
اگر که از یک دستور cURL در ابزار Dev کروم استفاده کنید میتوانید به صورت ایمن این پیغام را نادیده بگیرید.
علاوه بر این، اگر که از Cloudflare استفاده میکنید، به سادگی نمیتوانید به ۱۰۰ در YSlow برسید. Cloudflare از یک کوکی __cfduid برای هر درخواست استفاده میکند که به دلایل امنیتی نمیتوانید آن را حذف کنید. در نتیجه این ارور پابرجا خواهد ماند.