واکنش های پایدار یا Vary consistently
تعجب نکنید مبحثی که می خواهم باز کنم چیز پیچیده و غامض نیست بلکه بیشتر می خواهم یکی از نکاتی را باز کنم که به درست کار نکردن کش تنظیم شده شما مربوط میشود
برای شما از VARY در شرایط کش شدن یک صفحه سایت گفتم و توضیح مختصری از آن دادم
در اینجا vary را بیشتر می خواهم بازکنم تا مطلب بیشتر برایتان جا بیفتد
vary به طور خلاصه به واکنش ها در برابر محتوا اشاره دارد
وقتی تمام آن را خواندید متوجه می شوید که Vary از مواردی است که به سرور شما مربوط می شود تا فایلهای سایت تان پس اگر سرور اختصاصی ندارید یا دسترسی به تنظیمات سرور ندارید نیازی به خواندن آن پیدا نمی کنید
یکی از ارزنده ترین کاربردهای vary در پروکسی هایی است که همه چیز را کش می کنند(یک مثال از پروکسی گفته شده ISP ها هستند)
فرض کنید شما مطلبی را می خوانید که سرور آن را به دو صورت gzip شده و فشرده نشده بسته به پشتیبانی مرورگر می فرستد
حال فرض کنید مرورگر شما gzip را پشتیبانی می کند (در 90 درصد مواقع چنین است) پس سرور مطلب را بصورت gzip یا فشرده می فرستد
ISP هم در بین راه مطلب را ابتدا کش می کند وبعد برای شما می فرستد
حال کاربر دیگری با ارایه آدرس اینترنتی یکسان همان مطلب را از سرور در خواست می کند با این تفاوت که مرورگرش gzip را پشتیبانی نمی کند
حال ISP بین راه وقتی درخواست را می بیند و می بیند که آن را بر اساس آإرس اعلام شده در کش خودش دارد کش را برای این کاربر بی خبر از همه جا می فرستد
و چون مرورگر او gzip را پشتیبانی نمی کند تنها یک سری حروف عجق وجق می بیند
در نتیجه فکر می کند از منبع ایراد وجود دارد
برای اجتناب از خطاهای از این دست VARY تعریف شد
در حالت فشرده vary در اکثر سرور ها بصورت * "user-agent"
و در حالت غیر فشرده بصورت * "accept-encoding, user-agent"
در می اید
تا اینجای کار همه چیز درست است و دیگر ISP ها دچار آن اشتباه مهلک نمی شوند
ولی مشکل اینجاست که اینبار مرورگر دچار مشکل شده و نمی تواند تفاوتی بین حالت فشرده شده و غیر آن قائل شود در نتیجه کش را مورد استفاده قرار نمی دهد
چرا که در حالت فشرده و غیر آن دو نوع VARY دریافت کرده
برای رفع این مشکل توصیه می شود که در هر دوحالت از vary حالت فشرده یعنی
* "user-agent"
استفاده شود