Previous AI behaviour meant that supporting Retina required adding very high values in the $resolutions array. This is sub-optimal: 1) This array is meant to be nothing more than the same values as your media query breakpoints. Adding larger ones isn't intuitive. 2) When no cookie is set, AI sends non-mobile devices the largest $resolution value, which in this case could be far too large for most people. AI is now much smarter, you do not need to edit the $resolutions array; just leave that as your CSS MQ sizes. AI now auto-detects the pixel density of any high DPI device and either picks a matching size from the existing array, or creates new high-dpi images which are multiples of your chosen $resolutions values. NOTE: If you see folders in the ai-cache directory which are *larger* than any defined in your $resolutions array, it is because someone with a high DPI / Retina display visited your site, and AI was able to generate the required image.
Better behaviour when cookies are not available. Now creates the cache directory itself, making installation a two-step process: 1) Put the files on your server 2) Add one line of JS to the <head> of your HTML
…sers instead of 'desktop' ones. This does a better job for unusual OSes, tablets etc. "Mobile" is in the UA string of the latest mobile IE, mobile Firefox and all mobile WebKits, but is not in the UA string of Android tablets or desktop browsers. If you want to treat Opera Mobile as a mobile browser too, change the detection to "mobi" instead of "mobile".
Stupid mistake was causing the browser detect to always return false. Now fixed. With this update Adaptive Images now detects if a user is running on a desktop OS and switches $mobile_first to FALSE in that case. This means that _if no cookie is set_ and $mobile_first is TRUE the following will happen: On a mobile phone, the mobile sized image will be delivered. On a desktop, the highest resolution configured will be delivered. If a cookie is set, Adaptive Images will use the cookie value to determine the correct size image to send.
To work around browser issues with unreliable cookie setting speed Adaptive Images now also checks the user agent string. If a desktop environment is detected, $mobile_first is automatically over-ridden to "FALSE". If not Adaptive Images will obey the configured value. This is a safety fallback and requires testing before I revert the default $mobile_first configured value to TRUE.
Fixed an issue where GD was present but did not always have the imageconvolution function available. Changed $mobile_first default to FALSE to avoid issues with unpredictable browser behaviour relating to race conditions between cookie setting and image requesting
…ects of unfavourable race-condition outcomes. Stopped Firefox (and IE) from honouring $mobile_first: This is because both suffer from a race condition when setting the cookie. Sometimes it's set before <img> are requested, sometimes not. This could produce desktop websites with mobile versions on first page load. Changed the HTTP Cache Header from "public" to "private": This allows caches that are specific to one user (e.g., browser cache) to store the image in cache; shared caches (e.g., a proxy server) won't. This should avoid people behind proxies or other caching mechanisms experiencing wrongly sized images.
…uests, fixes #3
…TP/1.1, Pragma is a hack for very old things. Also fixed maxage to be max-age