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.