شرایط پیشنیاز در پروتکل HTTP یکی از مواردی است که در هنگام ارسال درخواستها به سرور برای حفظ یکپارچگی دادهها و جلوگیری از بهروزرسانیهای ناخواسته استفاده میشود. در واقع، شرایط پیشنیاز به ما این امکان را میدهد تا تنها در صورتی که شرایط خاصی برآورده شده باشد، عملیاتهایی مانند بهروز رسانی یا حذف را انجام دهیم.
یکی از مهمترین کاربردهای این ویژگی در کاهش برخورد همزمانی و از دست رفتن تغییرات است. مثلا زمانی که چند کاربر به صورت همزمان بر روی یک منبع کار میکنند، استفاده از این پیششرطها میتواند مفید باشد. به عنوان مثال، میتوانیم تعیین کنیم که تنها اگر دادهها از زمان آخرین دریافت کاربر تغییر نکرده است، بهروز شود.
در HTTP، شرایط پیشنیاز معمولاً از طریق هدرهای خاص مانند If-Match
یا If-None-Match
برای ETag و همچنین If-Modified-Since
برای تاریخ آخرین تغییر اعمال میشود.
به کارگیری دقیق این شرایط پیشنیاز میتواند به طور قابل توجهی به بهبود کارایی و قابلیت اطمینان برنامههای تحت وب کمک کند. این کار با اطمینان از این که تغییرات در منابع تنها زمانی اعمال شوند که شرایط خاصی برآورده شدهاند، انجام میشود.
بگذارید نگاهی بیندازیم به یک نمونه کد که نشان میدهد چگونه میتوان از این شرایط در درخواستهای HTTP استفاده کرد.
GET /resource HTTP/1.1
Host: example.com
If-None-Match: "etag12345"
در این قطعه کد ساده، ما یک درخواست GET
به سرور ارسال میکنیم. این درخواست شامل یک هدر If-None-Match
است که بیان میکند درخواست فقط زمانی موفق خواهد بود که مقدار ETag فعلی منبع برابر یا متفاوت با "etag12345" باشد.
درصورتیکه ETag با مقداری که ارسال کردهایم تطابق داشته باشد، سرور ممکن است به ما کد وضعیت 304 «تغییری نکرده» ارسال کند و محتوای منبع را بازنگرداند، که باعث بهصرفهجویی در پهنای باند و منابع میشود.