yslow каже, що етаги неправильно налаштовані. як правильно налаштувати етаги на IIS7?


20

запускаючи ySlow на веб-сайті, який я підтримую, я помітив, що повідомляється, що етаги неправильно налаштовані для зображень сайту (наприклад, * .jpg, * .png, * .gif). Хтось може допомогти пояснити, що я повинен зробити, щоб IIS7 видав ці етаги правильно?

Відповіді:


7

Прийнята відповідь Farseeker не працює. Я перевірив це в IIS 7.0.6000.16386 на Windows Server 2008 Standard SP 2.

Дивіться коментар Джеффа Етвуда щодо Stack Overflow для того ж питання .


Ця відповідь більше не є правильною / актуальною. Ви можете змінити ETags у iis 7+, додавши правило для виходу,
AndrewPK

12

Повідомлення в порядку, якщо ви не розміщуєте вміст з декількох серверів. Якщо ви обслуговуєте лише один сервер, залиште їх там. Вони не болять. Якщо ви не хочете, щоб YSlow скаржився на них, натисніть кнопку « Змінити » біля елемента вибору Rulesets і відредагуйте профіль YSlow (V2). Просто зніміть прапорець "Налаштувати теги об'єктів (Etags)".


7
+1 YSlow скаржиться на багато речей, які не впливають на "просто смертні" веб-сайти. (Ні Ylowlow, у мене немає і мені не потрібен CDN. Будь ласка, киньте нюхати вже.)
Gerald Combs

Правда про зміну набору правил.
MikeJ

11

YSlow не скаржиться, що вони помиляються (навіть незважаючи на те, що це сказано), але скаржиться, що вони не потрібні. Єдиний спосіб змусити YSlow замовкнути про це - відключити їх.

Хороша річ, що я це робив сам раніше сьогодні!

Відкрийте менеджер IIS, натисніть сервер і перейдіть до заголовків відповідей HTTP. Натисніть кнопку "Додати ..." і під назвою введіть:

ETag

(залежно від регістру). У розділі Значення введіть

""

(ось дві подвійні лапки)

І ETags почав!


Як зазначають інші, ви повинні видаляти ETags лише тоді, коли знаєте, що вам потрібно; у багатьох випадках це не буде так.
Боббі Джек

1
Це може бути так, але справа в тому, що відповідь правильно відповідає на питання.
Марк Хендерсон

1
Питання задавало: "як мені змусити IIS7 видати ці етаги правильно?". Ваша відповідь полягала в тому, щоб взагалі припинити видачу ETags, що є можливим ударом та, ймовірно, непотрібним (у запитанні не згадувалося про використання CDN).
Боббі Джек

2
@Bobby: ОП неявно запитує "як мені змусити IIS7 видати ці етаги правильно, як визначено YSlow ?". і єдине "правильне" налаштування, що стосується YSlow, - це їх відключення.
Кіп

1
@Kip, ні, неявна частина неявна, і ви не можете її здогадатися. Але, припускаючи, що ОП є розумною людиною, він, ймовірно, хотів сказати, "згідно YSlow конфігурація здається неоптимальною, як я можу зробити її оптимальною?" - І тоді ця відповідь трохи смішна. Це як "чому скаржиться мій тест?" - "Просто видаліть блок-тест, і він більше не скаржиться!"
чікодоро


3

У iis 6 ви можете додати спеціальний заголовок для 'ETag' = ""

У iis 7 додайте правило перезапис вихідних даних таким чином:

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

IIS 7 замінить власні заголовки та всі інші рішення, запропоновані в різних інших відповідях щодо тієї ж проблеми. Правила вихідної пошти - єдиний елемент, який, здається, працює, оскільки він переписує все, що встановлено безпосередньо перед поверненням користувачеві. Запропоноване правило вихідних даних відповідає будь-якій змінній сервера, названій до RESPONSE_ETagтих пір, поки значення RESPONSE_ETagмає один або більше символів і переписує значення в порожній рядок.



1

Краще скористайтеся цим:

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern="(.*)\:(.*)" />
    <action type="Rewrite" value="{R:1}" />
  </rule>
</outboundRules>

3
Ласкаво просимо до помилки сервера! Хоча чарівні байти, безумовно, приємні, для інших людей, які читають його, це приголомшливо, якщо ви поясните, чому це правильно.
Falcon Momot
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.