O IIS tem um proxy secreto, não logado, transparente e sensível a maiúsculas e minúsculas embutido?
Existe um arquivo no servidor web:
GET http://www.stackoverflow.com/javascript/ModifyQuoteArea.js HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: www.stackoverflow.com
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 29246
Date: Mon, 07 Mar 2011 14:20:07 GMT
Content-Type: application/x-javascript
ETag: "5a0a6178edacb1:1c51"
Server: Microsoft-IIS/6.0
Last-Modified: Fri, 02 Tue 2010 17:03:32 GMT
Accept-Ranges: bytes
X-Powered-By: ASP.NET
...
O problema é que as alterações feitas no arquivo não serão exibidas, a versão antiga (por exemplo, fevereiro do ano passado) continua sendo exibida:
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 29246
Date: Mon, 07 Mar 2011 14:23:07 GMT
Content-Type: application/x-javascript
ETag: "5a0a6178edacb1:1c51"
Server: Microsoft-IIS/6.0
Last-Modified: Fri, 02 Tue 2010 17:03:32 GMT
Accept-Ranges: bytes
X-Powered-By: ASP.NET
...
O mesmo arquivo antigo é exibido, embora tenhamos:
- renomeou o arquivo
- excluiu o arquivo
- reiniciado IIS
A solicitação deste arquivo não aparece nos registros do IIS (por exemplo, C:\WINNT\System32\LogFiles\W3SVC7\
)
E isso só acontece do lado de fora (ou seja, a internet). Se você emitir a solicitação localmente no servidor, você irá:
- obtenha o arquivo atual (arquivo lá)
- 404 (arquivo renomeado)
- 404 (arquivo excluído)
Mas se eu alterar o caso do recurso solicitado, por exemplo:
GET http://www.stackoverflow.com/javascript/MoDiFyQuOtEArEa.js HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: www.stackoverflow.com
Note: MoDiFyQuOtEArEa.js
verses ModifyQuoteArea.js
Em seguida, eu faço obter o arquivo adequado (ou obter o 404 como espero se o arquivo for renomeado ou excluído).
Mas quaisquer alterações subsequentes no arquivo não serão exibidas até que eu altere o caso do arquivo que estou solicitando.
Os logs do IIS não mostram atividade quando o site da Web exibe um dos misteriosos arquivos armazenados em cache. Solicitações para outros arquivos (ou seja, ASP) (ou usando o truque alterar-pedido-recurso-caso-desvio-transparente-cache ) aparecem nos logs do IIS e mostram a fonte apropriada endereço IP do cliente (ou seja, não o endereço de algum proxy intermediário misterioso).
- Como o arquivo não existe mais no disco rígido, concluo que existe um proxy.
- As solicitações atendidas por esse proxy não são registradas nos logs do IIS.
- As solicitações de novos arquivos são registradas e, a partir do IP do cliente, não de um proxy IP.
- O proxy é sensível ao caso.
Isso não soa como algo que a Microsoft, ou o IIS, faria:
- um proxy transparente?
- case-sensitivie?
- sem registro?
- sobreviventes de reinícios do IIS?
- sobrevivendo em um cache por horas?
não acredito que o IIS do nosso cliente esteja fazendo essas coisas. Eu estou supondo que há algum outro proxy transparente na frente do IIS.
Ou o IIS tem um:
- transparente,
- sem registro,
- sensível a maiúsculas e minúsculas
- baseado em memória
proxy, que armazena conteúdo por pelo menos 7 horas?