Headers for PNG image output to make sure it gets cached at browser?

35,168

Solution 1

The final thing that worked was:

header('Pragma: public');
header('Cache-Control: max-age=86400');
header('Expires: '. gmdate('D, d M Y H:i:s \G\M\T', time() + 86400));
header('Content-Type: image/png');

Now the browser does not make requests for the image when loading a page with embeded one.

Solution 2

Make sure you also add public as so:

header('Cache-Control: max-age=86400, public');

Read this also, is very helpful.

Solution 3

An Expires header should help.

header('Expires: '. gmdate('D, d M Y H:i:s \G\M\T', time() + 86400));
Share:
35,168
ddinchev
Author by

ddinchev

Software engineer aiming to be a generalist with more experience in web and recommender systems. Also, I love sports and Legos! Currently @SkyScanner.

Updated on August 03, 2020

Comments

  • ddinchev
    ddinchev almost 4 years

    I have images (PNG) that are generated dynamically and will be embedded in websites and forums. When an image gets posted on a very busy page, there are a lot many connections to service for something that doesn't change often. I want to tell the browser for how long to cache it.

    So what headers do I need? Currently, I have:

    Cache-Control: max-age=86400
    Content-Type: image/png
    

    It seems that the browser is not caching the image (it is about 20-30kb). What else would be necessary?

    Edit: This is an example image, I already have an URL with .png extension: https://images.carspending.com/sigimg/5734/user/honda-accord-2-4i-executive-tourer_medium.png