IIS6 не выполняет сжатие gzip при включении заголовка Via в запрос - PullRequest
2 голосов
/ 19 ноября 2009

У меня есть статический контент, проходящий через CDN. Я использую встроенное в IIS6 сжатие (gzip & deflate) для статического содержимого, и это прекрасно работает, когда я запрашиваю его. Однако, когда CDN делает начальный запрос контента, он не возвращается сжатым. Поэтому у них нет сжатого контента для пересылки людям, запрашивающим его. (Да, это поднимает вопрос о людях, запрашивающих [сжатый] контент из CDN с браузером, который не может обработать сжатие. - Мы пока отложим это в одну сторону)

Вот пример запроса без заголовка 'Via':

    HEAD /flash/swfobject.js HTTP/1.1  
    User-Agent: curl/7.19.7 (i386-pc-win32)  
    Host: localhost:9120  
    Accept: */*  
    Connection: Keep-Alive  
    accept-encoding: gzip  

И возвращает сжатый ответ:

    HTTP/1.1 200 OK
    Content-Length: 4357
    Content-Type: application/x-javascript
    Content-Encoding: gzip
    Expires: Wed, 01 Jan 2020 00:00:00 GMT
    Last-Modified: Wed, 18 Nov 2009 15:36:52 GMT
    Accept-Ranges: bytes
    Vary: Accept-Encoding
    Server: Microsoft-IIS/6.0
    Date: Thu, 19 Nov 2009 10:27:50 GMT

Однако, если я включаю заголовок «Via» в запрос (как это делает CDN), то результат возвращается без сжатия:

Запрос:

    HEAD /flash/swfobject.js HTTP/1.1
    User-Agent: curl/7.19.7 (i386-pc-win32)
    Host: localhost:9120
    Accept: */*
    Connection: Keep-Alive
    Via: 1.1 204.160.105.17:80 (Footprint 4.5/FPMCP)
    accept-encoding: gzip

Ответ:

 
    HTTP/1.1 200 OK
    Content-Length: 14602
    Content-Type: application/x-javascript
    Expires: Wed, 01 Jan 2020 00:00:00 GMT
    Last-Modified: Wed, 18 Nov 2009 15:36:54 GMT
    Accept-Ranges: bytes
    Server: Microsoft-IIS/6.0
    Date: Thu, 19 Nov 2009 10:29:52 GMT

Да, эти демонстрационные версии используют localhost в запросе. Я получаю тот же результат, используя фактическое доменное имя с разных машин в разных сетях.

Тогда два вопроса:

  1. Может ли IIS не применять сжатие из-за дополнительного заголовка? и если да, что я могу с этим поделать?

  2. Как узнать, распаковывает ли прокси-сервер содержимое перед его возвратом?

Бонусный вопрос 3 - Что я могу сделать для дальнейшего изучения этой проблемы?

Мне известен вопрос 332049, но в ответе есть заголовок, а не запрос.

1 Ответ

4 голосов
/ 21 января 2010

Я наткнулся на твой вопрос, исследуя это сам. Я обнаружил статью на MSDN , и короткий ответ заключается в том, что заголовок Via используется для прокси-серверов, а прокси-серверы обычно портят сжатие. Вы можете удалить заголовок или изменить настройку в метабазе IIS (HcNoCompressionForProxies = "FALSE"). У меня был успех с обоими вариантами.

...