You can boost your site’s performance by letting visitors browsers know it should cache your static files. Nginx can be configured to set the “Expires” and the “max-age“ directive of the “Cache-Control” HTTP response headers for static files (eg. images, style sheets, javascript) it serves up to a date in the future. This allows browsers to cache the images for the amount of time specified by the Expires header. The Nginx expires directive can be placed inside http {}, server {}, location {} blocks or in an if statement inside a location {} block.
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 90d;
log_not_found off;
}
In the configuration example above, all .js, .css, .png, .jpg, .jpeg, .gif and .ico files get an Expires header with a date 90 days into the future from the browser access time. I have also set Nginx to not log 404 errors for missing images with the log_not_found setting. When I update my own sites I know when an image is missing. I don’t want to see 404 errors for images that are being sourced to on other’s sites (hot linking).
You can use the following time units:
- ms: milliseconds
- s: seconds
- m: minutes
- h: hours
- d: days
- w: weeks
- M: months (30 days)
- y: years (365 days)
One thing to keep in mind is that the Expires header only works for 200, 201, 204, 206, 301, 302, 303, 304 and 307 HTTP code responses.