Konfigurasi ETags

Advertisement
Tag Entity (ETags) adalah mekanisme bahwa server web dan browser digunakan untuk menentukan apakah komponen dalam cache browser sesuai dengan satu di server asal. (An "entitas" adalah kata lain "komponen": gambar, script, stylesheet, dll) ETags ditambahkan untuk menyediakan mekanisme untuk memvalidasi entitas yang lebih fleksibel dibandingkan dengan tanggal modifikasi terakhir. Sebuah ETag adalah string yang secara unik mengidentifikasi versi tertentu dari sebuah komponen. Satu-satunya kendala Format adalah bahwa string dikutip. Server asal menentukan ETag komponen yang menggunakan ETag header respon.

      HTTP/1.1 200 OK
      Last-Modified: Tue, 12 Desember 2006 03:03:59 GMT
      ETag: "10c24bc-4AB-457e1c1f"
      Content-Length: 12195

Kemudian, jika browser harus memvalidasi komponen, menggunakan Jika-Tidak-Match header untuk lulus ETag kembali ke server asal. Jika ETags cocok, kode status 304 dikembalikan mengurangi respon oleh 12195 byte untuk contoh ini.

      GET / i / yahoo.gif HTTP/1.1
      Host: us.yimg.com
      Jika-Diubah-Sejak: Tue, 12 Desember 2006 03:03:59 GMT
      Jika-Tidak-Match: "10c24bc-4AB-457e1c1f"
      HTTP/1.1 304 Not Modified

Masalah dengan ETags adalah bahwa mereka biasanya dibangun menggunakan atribut yang membuat mereka unik ke server hosting situs tertentu. ETags tidak akan cocok bila browser mendapat komponen asli dari satu server dan kemudian mencoba untuk memvalidasi komponen yang pada server yang berbeda, situasi yang terlalu umum pada situs Web yang menggunakan sekelompok server untuk menangani permintaan. Secara default, baik Apache dan IIS menanamkan data dalam ETag yang secara dramatis mengurangi kemungkinan uji validitas berhasil di situs web dengan beberapa server.
The ETag format untuk Apache 1.3 dan 2.x adalah inode-size-timestamp . Meskipun file yang diberikan mungkin berada di direktori yang sama di beberapa server, dan memiliki ukuran file yang sama, perizinan, timestamp, dan lain-lain, inode yang berbeda dari satu server ke yang berikutnya.

IIS 5.0 dan 6.0 memiliki masalah yang sama dengan ETags. Format untuk ETags pada IIS adalah Filetimestamp: ChangeNumber . Sebuah ChangeNumber adalah counter digunakan untuk melacak perubahan konfigurasi IIS. Ini tidak mungkin bahwa ChangeNumber adalah sama di semua server IIS di balik situs web.

Hasil akhirnya adalah ETags dihasilkan oleh Apache dan IIS untuk komponen yang sama persis tidak akan cocok dari satu server ke yang lain. Jika ETags tidak cocok, pengguna tidak menerima kecil, cepat 304 respon yang ETags dirancang untuk, melainkan, mereka akan mendapatkan 200 respon normal bersama dengan semua data untuk komponen. Jika Anda meng-host situs web Anda hanya pada satu server, ini bukan masalah. Tapi jika Anda memiliki beberapa server hosting situs web Anda, dan Anda menggunakan Apache atau IIS dengan konfigurasi ETag default, pengguna mendapatkan halaman lambat, server Anda telah beban yang lebih tinggi, Anda mengkonsumsi bandwidth yang lebih besar, dan proxy aren ' t caching konten Anda secara efisien. Bahkan jika komponen Anda memiliki masa depan yang jauh Expires header, permintaan GET bersyarat masih dibuat setiap kali pengguna hits Reload atau Refresh.

Jika Anda tidak mengambil keuntungan dari model validasi yang fleksibel yang memberikan ETags, lebih baik untuk hanya menghapus ETag sama sekali. The Last-Modified header yang memvalidasi berdasarkan timestamp komponen. Dan menghapus ETag mengurangi ukuran header HTTP baik dalam respon dan permintaan berikutnya. Ini Artikel Dukungan Microsoft menjelaskan cara menghapus ETags. Dalam Apache, hal ini dilakukan dengan hanya menambahkan baris berikut ke file konfigurasi Apache Anda:
      FileETag none