Bem, como seu aplicativo controla os próprios arquivos de cache, você pode fazer uso da try_files
diretiva:
location ~ \.php$ {
try_files /cache/$uri.html @php;
# the directives below will affect cache serving
}
location @php {
# pass to FastCGI or Apache proxy for PHP rendering
}
Para uma solicitação para whatever.php
, isso verificará se cache/whatever.php.html
existe e o retornará, se houver. Caso contrário, o pedido vai para o PHP.
Alternativa . Falando francamente, esse método funcionará, mas é bastante detalhado e será muito mais detalhado se você decidir ignorar o cache para algumas solicitações. Por exemplo, e se você quiser ir diretamente para o PHP se houver um argumento debug
: whatever.php?debug
?
O Nginx tem uma boa resposta para este problema, seu caching embutido. Supondo que você esteja usando o FastCGI para servir o PHP, a configuração do Nginx ficaria assim:
# you have to declare a cache at "http" level
http {
fastcgi_cache_path /path/to/cache levels=1:2
keys_zone=my_cache_id:10m
inactive=5m;
}
# server level
location / {
fastcgi_cache my_cache_id;
# cache HTTP replies with statuses 200, 302 for 5 minutes:
fastcgi_cache_valid 200 302 5m;
# do not cache if there is a "debug" argument or PHP returned HTTP header Pragma:
fastcgi_no_cache $arg_debug$http_pragma;
# other FastCGI directives...
fastcgi_pass localhost:9000;
}
A documentação do Nginx é aqui