آشنایی با هدر If-None-Match در HTTP

http if none match header
20 آبان 1403

هدر If-None-Match چیست و چگونه کار می‌کند؟

در دنیای اینترنت سرعت و کارایی مهم‌ترین اصول برای طراحی یک وب سایت حرفه‌ای هستند. یکی از ابزارهایی که پروتکل HTTP برای بهبود این دو اصل در اختیار ما قرار می‌دهد، استفاده از هدر If-None-Match است. این هدر بخش مهمی از پروتکل HTTP است و به ما کمک می‌کند تا بر اساس تغییرات محتوای سرور، درخواست‌های جدید ارسال کنیم.

هدر If-None-Match به طور خاص در مدیریت کش سرورها و مرورگرها اهمیت دارد. زمانی که مرورگر درخواستی را به سرور ارسال می‌کند، ممکن است از این هدر استفاده کند تا سرور تنها زمانی محتوای جدید را ارسال کند که محتوای قبلی تغییر کرده باشد. این کار باعث می‌شود تا ترافیک شبکه کاهش یابد و سرعت بارگذاری صفحات نیز افزایش پیدا کند.

این هدر با استفاده از یک ETag یا همان شناسه یکتا در کنار محتوا کار می‌کند. سرور هنگام ارسال محتوای جدید، یک ETag تولید کرده و در پاسخ به مرورگر ارسال می‌کند. مرورگر این ETag را ذخیره می‌کند تا در درخواست بعدی آن را به همراه هدر If-None-Match ارسال کند.

چگونه هدر If-None-Match را پیاده‌سازی کنیم؟

پیکربندی درست هدر If-None-Match می‌تواند به کاهش مصرف پهنای باند و افزایش کارایی سایت شما کمک کند. این کار برای API‌های وب نیز بسیار مفید است چرا که به سرورها اجازه می‌دهد منابع را تنها زمانی به‌روزرسانی کنند که واقعاً نیاز به تغییر وجود دارد.


GET /resource HTTP/1.1
Host: example.com
If-None-Match: "etag-12345"

در قطعه کد بالا، روشی برای استفاده از هدر If-None-Match را مشاهده می‌کنید. این درخواست به سرور می‌گوید که اگر محتوای مربوط به ETag معادل با "etag-12345" تغییر نکرده است، پاسخی ارسال نکنید و اگر تغییر کرده بود، محتوای جدید را ارسال کنید.

  1. GET /resource HTTP/1.1 : این خط یک درخواست GET را برای منبع خاصی در سرور مشخص می‌کند.
  2. Host: example.com : نشان می‌دهد که درخواست به سرور خاصی در حال ارسال است.
  3. If-None-Match: "etag-12345" : به سرور می‌گوید که تنها در صورتی که ETag به "etag-12345" تغییر نکرده، محتوایی ارسال نشود.

سوالات متداول

؟

چرا باید از هدر If-None-Match استفاده کنیم؟

؟

تفاوت هدر If-None-Match با If-Modified-Since چیست؟

؟

چگونه می‌توان ETag را برای منابع وب تنظیم کرد؟