7

Sto usando il seguente profilo di cache di output:Vary: * erroneamente aggiunto alla risposta di intestazione http (asp.net MVC3)

<add name="MyFunkyProfile" duration="180" varyByParam="*" location="ServerAndClient" /> 

In dev, ho un header di risposta con una sola entrata Vary:

HTTP/1.1 200 OK 
Server: Microsoft-IIS/7.5 
... 
Vary: Accept-Encoding 
Cache-Control: private, max-age=180, s-maxage=0 
... 

Quando schiero la mia app, ho un extra variano ingresso inserito nella risposta:

HTTP/1.1 200 OK 
Server: nginx 
... 
Vary: Accept-Encoding 
Cache-Control: private, max-age=180, s-maxage=0 
... 
Vary: * 
... 

Perché questo extra Vary entrata? Questo impedisce alla cache di funzionare correttamente.

Qualche idea su come risolvere questo problema?

risposta

0

Hai provato a impostare varyByParam su None nel tuo profilo/file di configurazione? Vedi http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx.

Inoltre, solo indovinando qui - il file di configurazione differisce tra dev e 'live', ad es. varyByParam potrebbe essere impostato in modo diverso?

Nota: mi sono appena iscritto a SO, quindi non posso ancora aggiungere commenti (cosa che avrei fatto invece di postare questo come risposta).

+0

Impossibile impostare varyByParam su Nessuno, questo produrrà risultati errati. No varyByParam è impostato nello stesso modo in dev e prod. Il server è diverso però; dev server vs IIS. – nakhli

0

L'intestazione Vary: Accept-Encoding viene inserita dal livello di instradamento AppHarbor. L'intestazione è necessaria per ottenere proxy downstream (in genere un CDN come AWS CloudFront o simile) per memorizzare correttamente nella cache sia le versioni gzip che non gzip dei tuoi contenuti. Questo question has additional details.

È possibile fornire dettagli su come ciò causa problemi all'applicazione?

+0

La variabile Vary viene inserita dal framework per impostazione predefinita a meno che varyByParam = "" sia specificato (notare che varyByParam = "*" genera ancora stelle variabili) vedere la risposta di Atwood qui http://stackoverflow.com/a/486072/125804. Ha funzionato intorno al problema Pubblicheremo la soluzione qui come risposta. – nakhli