سرعت بالای سایت یکی از مهم‌ترین فاکتورها برای موفقیت در نتایج جستجو است. به همین دلیل، نصب یک افزونه مدیریت کش، اولین قدمی است که هر کارشناس سئو برای بهینه‌سازی سرعت برمی‌دارد. کش کردن صفحات باعث می‌شود سایت در کسری از ثانیه برای کاربران باز شود. اما همه‌چیز به این سادگی پیش نمی‌رود.

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

اینجا دقیقاً همان نقطه‌ای است که تنظیمات اولیه افزونه‌ها دیگر پاسخگو نیستند و باید وارد بخش قوانین پیشرفته (Advanced Rules) در افزونه‌ای مثل راکت (WP Rocket) شویم. هنر بهینه‌سازی سرعت فقط در فعال کردن کش نیست، بلکه در این است که بدانیم دقیقاً چه چیزهایی را نباید کش کنیم.

در ادامه، منطق پشت این تنظیمات پیشرفته را با هم بررسی می‌کنیم تا درک بهتری از مدیریت هوشمندانه کش در پروژه‌های واقعی داشته باشیم.

صفحات مستثنی از کش (Never Cache URLs)

همه صفحات سایت قرار نیست یک نسخه ثابت داشته باشند. برخی صفحات ماهیت لحظه‌ای و متغیر دارند. صفحه اعلام قیمت لحظه‌ای ارز یا طلا، یا داشبورد اختصاصی کاربران (پروفایل کاربری) از این دست صفحات هستند. اگر این صفحات کش شوند، کاربر اطلاعات قدیمی یا حتی اطلاعات شخص دیگری را می‌بیند.

البته افزونه راکت به اندازه کافی هوشمند است که برگه پرداخت یا سبد خرید ووکامرس را به صورت پیش‌فرض از کش خارج کند و نیازی به دخالت ما در این موارد نیست. اما برای صفحات اختصاصی که خودمان ساخته‌ایم، باید آدرس آن‌ها را در بخش «صفحات مستثنی» وارد کنیم.

گاهی اوقات با یک مجموعه از صفحات روبرو هستیم؛ مثلاً تمام آدرس‌هایی که بعد از کلمه profile/ قرار می‌گیرند. در این حالت نیازی نیست تک‌تک آدرس‌ها را وارد کنیم. با استفاده از علائم خاصی مانند .* (دات استار) می‌توانیم به افزونه بفهمانیم که هر آدرسی که با این فرمت شروع شد را بدون استثنا از سیستم کش خارج کند.

کوکی‌های مستثنی از کش (Never Cache Cookies)

گاهی مشکل از یک آدرس خاص نیست، بلکه پای یک رفتار یا رویداد در میان است. فرض کنید کاربری در فروشگاه شما روی دکمه «افزودن به سبد خرید» کلیک می‌کند. در این لحظه، سایت یک کوکی (Cookie) در مرورگر او ایجاد می‌کند تا این انتخاب را به خاطر بسپارد.

حالا اگر در همان لحظه، سیستم کش وردپرس از آن صفحه یک نسخه ثابت تهیه کند چه اتفاقی می‌افتد؟ اولین کاربر جدیدی که وارد سایت شود، همان نسخه ثابت را می‌بیند که در بالای آن نوشته شده: «محصول به سبد خرید شما اضافه شد». در حالی که او اصلاً کاری نکرده است!

برای جلوگیری از این تداخل‌های عجیب، می‌توانیم نام کوکی مربوط به سبد خرید را در بخش «کوکی‌های مستثنی» قرار دهیم. با این کار به افزونه می‌گوییم: هر زمان که مرورگر کاربر این کوکی خاص را داشت (یعنی محصولی در سبد خریدش بود)، سیستم کش را برای او غیرفعال کن تا بتواند اطلاعات واقعی و اختصاصی خودش را ببیند.

پاکسازی همیشگی آدرس‌ها (Always Purge URLs)

یکی از جذاب‌ترین بخش‌های مدیریت کش، درک تفاوت بین «کش نکردن» و «پاکسازی کش» است.

فرض کنید یک صفحه فرود دارید که «آخرین اخبار سایت» یا «جدیدترین مقالات» را نمایش می‌دهد. این صفحه برای شما بسیار مهم است و می‌خواهید همیشه جدیدترین مطالب در آن دیده شود.

یک راه حل این است که آدرس آن را در لیست «صفحات مستثنی» قرار دهید تا اصلاً کش نشود. اما این کار یک هزینه پنهان دارد: با هر بار ورود کاربران به این صفحه، یک درخواست مستقیم به سرور ارسال می‌شود. اگر در طول شب هیچ مقاله جدیدی منتشر نکرده باشید، باز هم سرور باید برای صدها بازدیدکننده، صفحه را از صفر پردازش کند که باعث مصرف بی‌دلیل منابع می‌شود.

راه حل هوشمندانه‌تر، استفاده از بخش «پاکسازی همیشگی آدرس‌ها» است. شما آدرس صفحه اخبار را در این کادر قرار می‌دهید. حالا این صفحه مثل بقیه صفحات کش می‌شود و با سرعت بالا به کاربران نمایش داده می‌شود و باری روی سرور نیست. اما به محض اینکه شما یک پست جدید منتشر کنید یا نوشته‌ای را ویرایش کنید، افزونه راکت متوجه این تغییر می‌شود و فقط کش همین صفحه خاص را پاک می‌کند تا نسخه جدید آن ساخته شود. به این ترتیب، هم سرعت را حفظ کرده‌اید و هم محتوای سایت همیشه به‌روز است.

کش کردن کوئری استرینگ‌ها (Cache Query Strings)

در سایت‌های فروشگاهی یا محتوایی بزرگ، معمولاً بخش جستجو یا فیلترهای متنوعی (مثل فیلتر رنگ، سایز یا برند) وجود دارد. وقتی کاربری از این فیلترها استفاده می‌کند، ساختار آدرس صفحه تغییر کرده و عباراتی به انتهای آن اضافه می‌شود که به آن‌ها کوئری استرینگ می‌گویند.

بخش تنظیمات کوئری استرینگ در افزونه کش، دقیقاً همان جایی است که اگر بدون دانش کافی سراغ آن بروید، می‌تواند هاست شما را از کار بیندازد.

اگر تصمیم بگیرید تمام نتایج جستجو یا فیلترها را کش کنید، به ازای هر جستجوی متفاوتی که کاربران انجام می‌دهند (هرچند تصادفی و بی‌معنی)، یک فایل کش جدید در هاست شما ساخته می‌شود. بعد از مدت کوتاهی ممکن است متوجه شوید که پوشه کش سایت شما چندین گیگابایت (مثلاً ۱۰ گیگ!) حجم اشغال کرده است. همچنین هر بار که بخواهید کش سایت را خالی کنید، سرور باید تمام این حجم عظیم را دوباره پردازش کند.

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

عامل‌های کاربری مستثنی (User Agents)

در نهایت، تنظیماتی هم برای مستثنی کردن دستگاه‌ها یا مرورگرهای خاص وجود دارد. مثلاً می‌توانید تعیین کنید که اگر کاربری با مرورگر سافاری یا با گوشی موبایل وارد سایت شد، صفحات برای او کش نشوند. استفاده از این بخش در پروژه‌های استاندارد و روزمره بسیار نادر است، اما برای رفع باگ‌های خاصی که فقط در یک مرورگر مشخص رخ می‌دهند، می‌تواند راهگشا باشد.

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