Hai bisogno di aiuto con alcune impostazioni di compressione web.config di IIS7


9

Sto provando a configurare le mie impostazioni di compressione IIS7 nel mio file web.config. Sto cercando di abilitare le richieste HTTP 1.0 su gzip.

MSDN ha tutte le informazioni a riguardo qui .

È possibile avere queste informazioni di configurazione nel file web.config del mio sito Web? O devo impostarlo a livello di applicazione? Attualmente, ho quel codice nel mio web.config ...

<system.webServer>
    <urlCompression 
        doDynamicCompression="true" 
        dynamicCompressionBeforeCache="true" />
    <httpCompression 
        cacheControlHeader="max-age=86400" 
        noCompressionForHttp10="False" 
        noCompressionForProxies="False" 
        sendCacheHeaders="true" />

    ... other stuff snipped ...

</system.webServer>

Non funziona :( Le richieste HTTP 1.1 vengono compresse, ma non 1.0.

Quella pagina MSDN sopra dice che può essere usata in: -

  • Machine.config
  • ApplicationHost.config
  • Applicazione root Web.config
  • Applicazione Web.config
  • Directory Web.config

Quindi, possiamo impostare queste impostazioni su una base per sito Web, programmaticamente in un file web.config? (questo è un file Web.config dell'applicazione ...) Cosa ho fatto di sbagliato?

Saluti :)

EDIT: mi è stato chiesto come faccio a sapere che HTTP1.0 non viene compresso. Sto usando le Regole di traccia richieste non riuscite, che riportano indietro: -

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END

Risposte:


3

Prestare molta attenzione al fatto che l'impostazione IIS 7.x web.config di

noCompressionForProxies="false"

Non è rispettato a livello web.config. Deve essere impostato in C: \ Windows \ System32 \ inetsrv \ config \ ApplicationHost.config in questo modo:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="False">

Assicurarsi ed eseguire un ripristino IIS dopo aver modificato l'impostazione.

Una richiesta viene determinata da un proxy da IIS se la richiesta Web del client ha l'intestazione HTTP "Via" in questo modo:

Via: 1.1 foo

È inoltre possibile utilizzare appcmdper configurare le impostazioni a livello di applicazione (che è probabilmente molto più semplice).
Pure.Krome,

2

Dopo un bel po 'di ricerca, è' bloccato 'per impostazione predefinita a livello di applicazione. Pertanto, deve essere "sbloccato". questo può essere ottenuto tramite la riga di comando o tramite gli strumenti di amministrazione di iis7 (download extra).

per esempio. appcmd set config -section:urlCompression /doDynamicCompression:true

refrences:


1

Come stai testando che le richieste HTTP1.0 non vengono compresse? È possibile che il client in uso non stia dicendo al server che può accettare una risposta compressa?

Se riesci a visualizzare le intestazioni inviate dal client (presentate dal client di test stesso, utilizzando Firebug o simili se stai testando in Firefox o IEHTTPHeaders se stai testando in IE o annusando il traffico utilizzando uno strumento esterno), dovresti vedere qualcosa di simile

Accept-Encoding: compress, gzip, deflate

lì da qualche parte. Se il client non informa il server che può accettare una risposta compressa, il server non ne invierà uno indipendentemente dalle altre impostazioni sul lato server.

Un altro problema potrebbe essere se si esegue il test tramite un server proxy che si è identificato come tale. In questo caso, l'impostazione noCompressionForProxies potrebbe avere la precedenza e bloccare la possibilità di una risposta compressa.

Una cosa da notare è che alcuni client e proxy che inviano richieste HTTP1.0 (di solito software precedente) non gestiranno correttamente una risposta compressa se ne ottengono una, quindi se abiliti la compressione per le risposte alle richieste HTTP1.0 assicurati di prova il tuo sito / applicazione in tutto il software client / proxy che prevedi vengano utilizzati dai visitatori / utenti. Questo è meno un problema se puoi garantire che il tuo pubblico di destinazione utilizzerà determinati software (se ad esempio l'app è solo per una rete aziendale interna) ma per il resto ci sono molte combinazioni da testare, motivo per cui la maggior parte dei server disabilita la compressione per 1.0 richieste completamente.


Sto testando che le richieste HTTP1.0 non vengono compresse utilizzando le Regole di traccia richieste non riuscite, che riportano: - DYNAMIC_COMPRESSION_START DYNAMIC_COMPRESSION_NOT_SUCESS Motivo: 3 Motivo: NO_COMPRESSION_10 DYNAMIC_COMPRESSION_END
Pure.Krome
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.