توضیحات اولیه
وقتی صحبت از سیستمهای وب میشود، عملکرد و بهینهسازی دادهها اهمیت بسیار زیادی دارد. یکی از روشهای بسیار رایج برای افزایش سرعت و کاهش بار سرور، کش کردن محتوا است. HTTP caching مکانیزمی است که در آن مرورگرها و سرورهای واسط محتوای چندبار بازدید شده را ذخیره میکنند تا در بازدیدهای بعدی سریعتر بارگذاری شود.
یکی از ویژگیهای کلیدی در این زمینه، directiveهایی است که مسئولیت کنترل نحوه و مکانیزمهای کش کردن دادهها را بر عهده دارند. در میان این directiveها، یکی به نام no-transform
وجود دارد که نقش بسیار خاص و حیاتی در برخی شرایط ایفا میکند. هنگامی که این ویژگی فعال باشد، یعنی تغییرات محتوای کش شده توسط cache serverها متوقف میشود. یعنی محتوای اصلی به همان شکل ذخیره و نمایش داده میشود و تغییری در آن ایجاد نمیشود. این امر در مواقعی که اصالت و صحت دادهها مهم است، مانند استفاده از تصاویر حساس یا دادههای رمزگذاری شده، اهمیت پیدا میکند.
ویژگی no-transform
همچنان مشخص میکند که پروکسیها و سایر فضای cache بین راهی و همچنین کلاینتها نباید دادههای دریافتی را برای بهینهسازی یا تحول یا فشردهسازی تغییر بدهند. این امر در محیطهایی که لازم است اصالت فایلها و محتوا حفظ شود بسیار حیاتی است.
نکته جالب در مورد استفاده از no-transform
این است که میتواند به صورت مستقل بر روی بخشهای مختلفی از محتوای ذخیره شده اعمال شود، مثل فایلهای تصویر یا اسکریپتها. در برخی موارد، ممکن است بخواهید مشخص کنید که برخی بخشها به هیچ وجه تغییر نکنند، در حالی که بقیه محتوا ممکن است اجازه تحول و فشردهسازی را داشته باشد.
در ادامه، به معرفی یک مثال کد درباره نحوه استفاده از این ویژگی میپردازیم.
Cache-Control: no-transform
توضیحات خط به خط کد
Cache-Control: no-transform
این خط از کد، ویژگی no-transform
را در هدر HTTP مشخص میکند. به این صورت که محتوایی که توسط سرور ارسال میشود نباید توسط هیچ یک از سیستمهای کش در مسیر مانند پروکسیها تغییر یا تبدیل شود. این دستور یعنی محتوا به صورت دست نخورده و اصیل به کاربر ارائه داده شود.