Fixing the CacheBusting on GetCropUrl as it was totally random which meant the server cache was creating a new cache file for every request.  Now changed it to use item updateDate.ToFileTimeUtc as the cache busting value so it will change only when the item is updated in Umbraco.