In D7, I have a panel that contains a view that contains a jquery image slideshow.
Every day, the images that compose the slideshow are updated by a cron job---ie, every day's new images override the old ones (they are given the same names). So, say I have image1.png, image2.png and image3.png---every day these files are overwritten with new pictures.
I have added the following anti-cache protections in my meta section to both the page/panel and the view itself:
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate"> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Expires" content="0"> <meta http-equiv="refresh" content="300">
Yet it seems that the only way my slideshow ever updates to reflect the new content of the image files is when I do an F5 or ctrl+r hard reload.
I don't want to ask my users to do this, so how can I force a reload and cache-clearing beyond the measures I've already taken above to get the browser to recognize that the images in the slideshow have changed on the server?
(I saw this recent similar post, How to tell if an image was updated, but it seems to apply to images created by Drupal, rather than created externally and pumped in.)
I have also added, in light of @mikeytown2's comment below, the following to my .htaccess file:
# Requires mod_expires to be enabled. <IfModule mod_expires.c> # Enable expirations. ExpiresActive On # Cache all files for 2 weeks after access (A). # ExpiresDefault A1209600 ExpiresDefault A600 #NOTE, this means ALL sites expire in 5 minutes by default! <FilesMatch \.php$> ExpiresActive Off </FilesMatch> </IfModule>
The .htaccess is in my public folder.
Even with this, which should be telling Drupal that all caches from my page expire at 5 minutes, I am still not seeing an update when new images replace old ones of the same name in my slideshow.
I have made sure to completely clear my cache and await an external cron, and the old images remain cached in the browser and/or server.