Forçando o Apache 2.4 a armazenar em cache arquivos com string de consulta usando mod_cache sem expirar

1

Eu preciso do mod_cache_disk para armazenar em cache um site contendo strings de consulta. A questão é que é um produto de fornecedor no IIS que estamos tentando armazenar em cache através de mod_proxy e não contém cabeçalhos de expiração. Eu percebo que esse problema viola vários RFCs e é por isso que o apache não o faz por padrão.

Existe uma maneira de forçar o apache 2.4.x a armazenar em cache com string de consulta e nenhum cabeçalho de expiração?

Esta configuração irá armazenar em cache, mas é claro, sem honrar? armazena em cache o conteúdo errado para a maioria dos itens.

CacheEnable disk https://
CacheEnable disk /
CacheRoot /var/cache/mod_proxy/
CacheDirLevels 4
CacheDirLength 5
CacheIgnoreCacheControl On
CacheIgnoreNoLastMod On
CacheIgnoreHeaders None
CacheMaxFileSize 100000000
CacheMinFileSize 1
CacheMaxExpire 1209600
CacheDefaultExpire 3600
CacheIgnoreQueryString On
CacheStoreNoStore On
CacheStorePrivate On

Se eu alterar CacheIgnoreQueryString para Off, ele começará a emitir erros sobre o cabeçalho de expiração.

AH00768: cache: /view.image?Id=1114 não armazenado em cache. Motivo: string de consulta presente, mas sem tempo de expiração explícito,

    
por Lucas Holt 26.03.2014 / 21:27

3 respostas

1

De acordo com esta resposta , a única maneira de fazer isso é deixar o Apache ver os cabeçalhos que deseja (Expira, o que você declarou, e, aparentemente, também Last-Modified).

O cartaz dessa resposta sugeriu escrever um filtro no lado do aplicativo, mas como o seu é um produto de fornecedor, isso pode não ser possível. Existe uma chance de adicioná-lo diretamente no IIS? Caso contrário, você pode ter sorte com uma configuração de proxy duplo: use um proxy para adicionar os cabeçalhos (mas não o cache) e o proxy que do Apache (levando os cabeçalhos e o cache).

    
por 22.12.2014 / 11:36
0

essa é a minha solução

<IfModule mod_cache.c>
    CacheIgnoreNoLastMod On
    CacheIgnoreHeaders Set-Cookie
    <IfModule mod_disk_cache.c>
        CacheRoot D:\apache_cache
        CacheEnable disk /
        CacheDirLevels 1
        CacheDirLength 1
    </IfModule>
</IfModule>

e do lado de backend adicionar cabeçalho

Cache-Control:s-maxage=1200

s-maxage - para caches proxy e CDNs

    
por 28.05.2015 / 14:14
0

A solução mais óbvia seria retirar a string de consulta antes que ela alcançasse mod_cache .

E o módulo mais óbvio para isso seria mod_rewrite .

Mas o não funcionará , porque mod_cache começou a usar propositalmente versão inalterada da string de consulta em 2006 .

    
por 10.06.2016 / 18:15