1. Một số cấu hình phổ biến của Nginx thêm vào header để yêu cầu trình duyệt web thực thi

+ add_header Pragma public:Cache-Control: public - Indicates that the response MAY be cached by any cache

+ add_header Cache-Control “public, must-revalidate, proxy-revalidate”;

             . must-revalidate: tells caches that they must obey any freshness information you give them about a representation. HTTP allows caches to serve stale representations under special conditions; by specifying this header, you’re telling the cache that you want it to strictly follow your rules.

            . proxy-revalidate: similar to must-revalidate, except that it only applies to proxy caches.

Một số chỉ thị về cache khi cấu hình Nginx:

a. Chỉ thị cache với file css, js, htc:

 
location ~ \.(css|js|htc)$ 
             { add_header Pragma "public"; add_header Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate";
                        log_not_found off; access_log off; } 

b. Chỉ thị cache với file html – htm – rtf…:

location ~ \.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml)$ 
           { add_header Pragma "public"; add_header Cache-Control "max-age=3600, public, must-revalidate, proxy-revalidate"; 
             log_not_found off; access_log off; } 

c. Chỉ thị cache với các loại file media…:

location ~ \.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mp e|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ 
{ add_header Pragma "public"; add_header Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate"; 
             log_not_found off; access_log off; }

2. Max-age và S-maxage:

Max-age: chỉ thị yêu cầu trình duyệt web lưu cache kết quả nhận được từ web server trong bao lâu để phục vụ người dùng khi có yêu cầu

S-maxage: chỉ thị yêu cầu các hệ thống cache trung gian (CDN…) lưu trữ kết quả trả về từ web server trong bao lâu

Khi sử dụng module PageSpeed tích hợp vào Nginx để tối ưu tài nguyên, tăng tốc độ tải website phục vụ người dùng, PageSpeed sẽ set cache cho các tài nguyên tĩnh này (có thể override các chỉ thị Nginx). Đối với các tài nguyên mà PageSpeed chưa tối ưu, PageSpeed sẽ có chỉ thị cache mặc định: Cache control: S-maxage = 10 (các tài nguyên unoptimized này chỉ được các hệ thống shared cache lưu trong 10 giây).

Giá trị s-maxage được cấu hình tại câu lệnh dưới đây với Nginx:

pagespeed InPlaceSMaxAgeSec 10;

Tham khảo:
https://serverfault.com/questions/515501/add-expires-header-conditionally-based-on-mime-type-in-nginx

https://gist.github.com/philipstanislaus/654adafad91efb6de230845b5bdeae61

https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/

https://www.modpagespeed.com/doc/system#s-maxage