وقتی از HTTP صحبت میکنیم، یکی از قابلیتهای جالب و بهینه آن، ارسال و دریافت درخواستهای شرطی است. این کلک باعث میشود سرور و کلاینت بهتر با منابع شبکه ارتباط برقرار کنند و بهینهتر کار کنند. حالا ببینیم این درخواستها چطور کار میکنند و چه مزایایی دارند.
درخواستهای شرطی در HTTP به کلاینت این امکان را میدهند که به سرور بگوید تنها اگر شرایط خاصی برقرار باشد، منابع را برایش ارسال کند. این کار هم باعث کاهش پهنای باند مصرفی میشود و هم سرور را سبکتر میکند. مثلا شما میتوانید بگویید "فقط اگر فایل تغییر کرده بفرست". در غیر این صورت، سرور یک پاسخ وضعیت خاص میفرستد که یعنی لازم نیست منبع دوباره بارگذاری شود.
استفاده از درخواستهای شرطی مزیتهای زیادی دارد. به طور مثال، در صورت عدم تغییر محتوا، درخواست دوباره ارسال نمیشود و این از فشار روی سرور کم میکند. با کاهش ترافیک دادهها، هم کاربران سریعتر به پاسخ میرسند و هم پردازشها کارآمدتر میشوند.
یکی از روشهای درخواستهای شرطی استفاده از هدرهای If-Modified-Since و If-None-Match میباشد. با این هدرها سرور ابتدا بررسی میکند که آیا فایل یا داده از آخرین بار که کلاینت آن را دریافت کرده، تغییر کرده است یا خیر. اگر داده تغییر نکرده باشد، با یک پاسخ "304 Not Modified" به کلاینت پاسخ میدهد.
در عمل، درخواستهای شرطی به عنوان یک ابزار قدرتمند برای کش کردن دادهها به شمار میآیند. با بهینهسازی منابع، کاربران میتوانند به راحتی تجربه کاربری بهتری داشته باشند زیرا زمان دریافت دادهها به واسطه بهروزرسانیهای غیرضروری کاهش مییابد.
حالا که اهمیت و نحوه عملکرد درخواستهای شرطی در HTTP را متوجه شدیم، یک نمونه از کد استفاده از آن را بررسی کنیم:
GET /example.txt HTTP/1.1
Host: www.example.com
If-Modified-Since: Tue, 20 Oct 2023 07:28:00 GMT
حالا بیایید هر خط این کد را توضیح بدهیم:
خط اول GET /example.txt HTTP/1.1
: این درخواست HTTP برای دریافت فایل example.txt
از سرور است.
خط دوم Host: www.example.com
: اینجا ما مشخص میکنیم که درخواست به سرور www.example.com
برسد.
خط سوم If-Modified-Since: Tue, 20 Oct 2023 07:28:00 GMT
: در این خط به سرور میگوییم که فقط اگر فایل بعد از تاریخ و زمان مشخص شده تغییر کرده، فایل جدید را بفرستد.