У меня есть статический контент, проходящий через 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 в запросе. Я получаю тот же результат, используя фактическое доменное имя с разных машин в разных сетях.
Тогда два вопроса:
Может ли IIS не применять сжатие из-за дополнительного заголовка? и если да, что я могу с этим поделать?
Как узнать, распаковывает ли прокси-сервер содержимое перед его возвратом?
Бонусный вопрос 3 - Что я могу сделать для дальнейшего изучения этой проблемы?
Мне известен вопрос 332049, но в ответе есть заголовок, а не запрос.