yslow mengatakan bahwa etag tidak terkonfigurasi. cara mengkonfigurasi etag dengan benar di IIS7?

20

menjalankan ySlow di situs web yang saya dukung, saya perhatikan dilaporkan bahwa etag salah konfigurasi untuk gambar situs (mis. * .jpg, * .png, * .gif). Adakah yang bisa membantu menjelaskan apa yang harus saya lakukan agar IIS7 mengeluarkan etag ini dengan benar?

MikeJ
sumber

Jawaban:

7

Jawaban yang diterima oleh Farseeker tidak berfungsi. Saya sudah menguji ini di IIS 7.0.6000.16386 pada Windows Server 2008 Standard SP 2.

Lihat komentar Jeff Atwood di Stack Overflow untuk pertanyaan yang sama .

Nickh
sumber
Jawaban ini tidak lagi benar / relevan. Anda dapat mengubah ETag di iis 7+ dengan menambahkan aturan keluar seperti yang terlihat di jawaban serverfault.com/a/528346/78230
AndrewPK
12

Etag tidak masalah selama Anda tidak menayangkan konten dari beberapa server. Jika Anda hanya melayani dari satu server, maka biarkan di sana. Mereka tidak terluka. Dan jika Anda tidak ingin YSlow mengeluh tentang mereka, lalu klik tombol Edit di dekat elemen pilih Rulesets dan edit profil YSlow (V2). Hapus centang opsi "Konfigurasikan tag entitas (Etag)".

Ionuț G. Stan
sumber
7
+1 YSlow mengeluh tentang banyak hal yang tidak memengaruhi situs web "belaka". (Tidak YSlow, saya tidak punya dan tidak perlu CDN. Tolong berhenti merengek.)
Gerald Combs
Benar tentang perubahan aturan yang ditetapkan.
MikeJ
11

YSlow tidak mengeluh bahwa mereka salah (meskipun itu yang dikatakan), tetapi mengeluh bahwa mereka tidak diperlukan. Satu-satunya cara agar YSlow tutup mulut tentang ini adalah dengan menonaktifkannya.

Hal yang baik adalah, saya baru saja melakukannya sendiri hari ini!

Buka manajer IIS Anda, klik pada server, dan pergi ke HTTP Response Headers. Klik tombol "Tambah ...", dan di bawah nama, masukkan:

ETag

(hal - hal sensitif). Di bawah Nilai, masukkan

""

(Itulah dua tanda kutip ganda)

Dan ETag menghilang!

Mark Henderson
sumber
Seperti orang lain tunjukkan, Anda hanya harus menghapus ETag jika Anda tahu Anda perlu; dalam banyak kasus, ini tidak akan terjadi.
Bobby Jack
1
Mungkin itu masalahnya, tetapi faktanya adalah bahwa jawaban tersebut menjawab pertanyaan dengan benar.
Mark Henderson
1
Pertanyaan yang diajukan adalah 'bagaimana saya membuat IIS7 untuk menerbitkan etag ini dengan benar?'. Jawaban Anda adalah untuk berhenti mengeluarkan ETag sama sekali, yang merupakan hit kinerja yang mungkin, dan kemungkinan tidak perlu (tidak disebutkan penggunaan CDN dalam pertanyaan).
Bobby Jack
2
@ Bobby: OP secara implisit bertanya "bagaimana cara saya membuat IIS7 mengeluarkan etag ini dengan benar seperti yang didefinisikan oleh YSlow ?". dan satu-satunya konfigurasi "yang benar", sejauh menyangkut YSlow, adalah menonaktifkannya.
Kip
1
@Kip, tidak, bagian implisitnya implisit, dan Anda tidak bisa menebaknya. Tetapi dengan anggapan bahwa OP adalah orang yang beralasan, dia mungkin ingin mengatakan "menurut YSlow konfigurasi tampaknya suboptimal, bagaimana saya bisa membuatnya optimal?" - Dan jawaban ini agak lucu. Itu seperti "mengapa unit test saya mengeluh?" - "Hapus saja unit test, dan itu tidak akan mengeluh lagi!"
chiccodoro
3

Di iis 6, Anda dapat menambahkan header khusus untuk 'ETag' = ""

Di iis 7, tambahkan aturan penulisan ulang keluar sebagai berikut:

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern=".+" />
    <action type="Rewrite" value="" />
  </rule>
</outboundRules>

IIS 7 akan menimpa header kustom, dan semua solusi lain yang diajukan dalam berbagai jawaban lain mengenai masalah yang sama. Aturan keluar adalah satu-satunya item yang tampaknya berfungsi karena menimpa apa pun yang ditetapkan sebelum dikembalikan ke pengguna. Aturan keluar yang diusulkan ini cocok dengan variabel server apa pun yang dinamai RESPONSE_ETagselama nilai RESPONSE_ETagmemiliki satu karakter atau lebih dan menulis ulang nilai menjadi string kosong.

AndrewPK
sumber
2

Silakan lihat jawaban untuk mengatur header respons Server di IIS7 untuk solusi parsial. Ya, solusi lengkap akan sangat bagus, tetapi saya akan mengambil apa yang bisa saya dapatkan.

jewewet
sumber
1

Lebih baik gunakan ini:

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern="(.*)\:(.*)" />
    <action type="Rewrite" value="{R:1}" />
  </rule>
</outboundRules>
pengguna197693
sumber
3
Selamat Datang di Kesalahan Server! Meskipun byte ajaib memang bagus, itu bagus untuk orang lain membacanya jika Anda menjelaskan mengapa ini benar.
Falcon Momot