محتوای آموزشی وبلاگ نتآرام
فرض کنید رنگ دکمه را در فایل CSS عوض میکنید. مرورگر برای سریعتر شدن سایت، نسخهٔ قبلی فایل را نزد خودش نگه داشته است؛ این نگهداری را کش مینامیم. اگر آدرس فایل هیچ تغییری نکند و زمان نگهداری طولانی باشد، ممکن است کاربر هنوز همان نسخهٔ قبلی را ببیند.
چرا گاهی بعد از تغییر CSS، کاربر ظاهر قبلی را میبیند؟
پارامتری مثل
?ver=2 به آدرس فایل اضافه میشود تا مرورگر بفهمد نسخهٔ تازهای داریم. حذف آن صرفاً برای کوتاه شدن نشانی، ممکن است تشخیص نسخهٔ تازه را سخت کند. روش دیگری هم هست: نام فایل با محتوایش تغییر کند، مثلاً style.a1b2.css به نام تازهای برسد. هر دو روش باید با تنظیم نگهداری فایلها هماهنگ باشند.برای بررسی، یک بار سایت را با مرورگری که قبلاً آن را دیده و یک بار در پنجرهٔ خصوصی باز کنید. اگر فقط مرورگر قبلی ظاهر کهنه دارد، فایل CSS دریافتشده و سیاست کش را بررسی کنید. راهحل پایدار این است که انتشار تازه، آدرس نسخهٔ تازه را معرفی کند؛ مجبور کردن همهٔ کاربران به پاک کردن کش، روش مناسبی برای هر بار انتشار نیست.
پارامتر نسخه چه کاری انجام میدهد؟
فرض کنید قالب شما فایل style.css را با نسخهٔ 1.2 بارگذاری میکند. پس از تغییر قالب، آدرس فایل با نسخهٔ تازه درخواست میشود و مرورگر آن را جدا از پاسخ ذخیرهشدهٔ قبلی میشناسد. این فرایند بخشی از مدیریت کش است. اگر آدرس همیشه یکسان بماند و کش طولانی باشد، کاربر ممکن است تا مدتی CSS قدیمی را دریافت کند.
وجود علامت سؤال بهتنهایی مانع کش شدن همهٔ فایلها نیست. رفتار واقعی به هدر پاسخ، تنظیم مرورگر و سیاست CDN بستگی دارد. بنابراین باید همان درخواست را بررسی کنید، نه اینکه تنها بر اساس شکل آدرس نتیجه بگیرید کش کار نمیکند.
بررسی با ابزار مرورگر
صفحه را باز کنید و در Network درخواست CSS یا JavaScript را انتخاب کنید. آدرس، وضعیت پاسخ و هدرهای کش را بخوانید. بار اول و بار بعد را مقایسه کنید، اما به یاد داشته باشید بعضی تنظیمات ابزار توسعهدهنده هنگام باز بودن آن کش را غیرفعال میکنند. نتیجهٔ آزمایش باید با تنظیم واقعی مرورگر خوانده شود.
اگر فایل در هر بار بارگذاری دوباره دریافت میشود، علت ممکن است Cache-Control، تغییر آدرس، سیاست CDN یا درخواست متفاوت باشد. حذف ?ver فقط یکی از بخشهای آدرس را عوض میکند و لزوماً هیچکدام از این علتها را اصلاح نمیکند.
چه روشی برای نسخهبندی مناسب است؟
وردپرس به قالب و افزونه اجازه میدهد نسخهٔ فایل را هنگام بارگذاری تعیین کنند. در بعضی ساختارها نیز نام فایل شامل hash است و با تغییر محتوا عوض میشود. هر دو روش زمانی مفیدند که نسخهٔ ارائهشده با محتوای واقعی هماهنگ باشد. نام دارای hash بدون تغییر هنگام انتشار، همان مشکل کش قدیمی را ایجاد میکند.
اگر مسئول قالب اختصاصی هستید، نسخهٔ فایل را در فرایند انتشار مدیریت کنید. اگر از قالب آماده استفاده میکنید، کد حذف عمومی نسخه را به functions.php اضافه نکنید؛ ابتدا رفتار قالب و ابزار کش آن را بررسی کنید. تغییر فایل قالب والد نیز ممکن است با بهروزرسانی بعدی از بین برود.
آزمون بعد از انتشار
پس از تغییر CSS یا JavaScript، سایت را در یک مرورگر دارای کش قبلی و یک نشست تازه امتحان کنید. منو، فرم، چیدمان موبایل و بخشهای تعاملی باید نسخهٔ صحیح را دریافت کنند. پاک کردن کش شخصی شما اثبات نمیکند همهٔ کاربران فایل تازه میبینند.
اگر CDN دارید، سیاست کش و روش purge آن را با نسخهبندی هماهنگ کنید. تنظیم کش عمومی روی پاسخ وابسته به کاربر هم مسئلهای جداست و نباید با فایل ثابت یکی گرفته شود. هدف از بهینهسازی این است که فایل سالم سریع برسد و پس از انتشار تازه شود؛ صرف حذف یک پارامتر برای سبز شدن گزارش، این هدف را تضمین نمیکند.
منابع و ادامهٔ مطالعه
مقاله قبلی
مقاله بعدی
تنظیم کش مرورگر برای فایلهای سایت و وردپرس
۲۶ بهمن ۱۳۹۵دیدگاهها (۰)
دیدگاههای تاییدشده و پاسخهای تیم نتآرام
