protected function _deliverMedia(CakeResponse $response, $mediaFile, $mediaInfo) { $response->sharable(true, 2592000); //$response->mustRevalidate(true); $response->expires('+30 days'); $modTime = filemtime($mediaFile); $response->modified($modTime); $response->etag(md5($mediaFile . $modTime)); //$response->header("Pragma", "cache"); $response->type($mediaInfo['ext']); $response->file($mediaFile); $response->send(); }
/** * Tests the cache method * */ public function testCache() { $response = new CakeResponse(); $since = time(); $time = new DateTime('+1 day', new DateTimeZone('UTC')); $response->expires('+1 day'); $expected = array('Date' => gmdate("D, j M Y G:i:s ", $since) . 'GMT', 'Last-Modified' => gmdate("D, j M Y H:i:s ", $since) . 'GMT', 'Expires' => $time->format('D, j M Y H:i:s') . ' GMT', 'Cache-Control' => 'public, max-age=' . ($time->format('U') - time())); $response->cache($since); $this->assertEquals($expected, $response->header()); $response = new CakeResponse(); $since = time(); $time = '+5 day'; $expected = array('Date' => gmdate("D, j M Y G:i:s ", $since) . 'GMT', 'Last-Modified' => gmdate("D, j M Y H:i:s ", $since) . 'GMT', 'Expires' => gmdate("D, j M Y H:i:s", strtotime($time)) . " GMT", 'Cache-Control' => 'public, max-age=' . (strtotime($time) - time())); $response->cache($since, $time); $this->assertEquals($expected, $response->header()); $response = new CakeResponse(); $since = time(); $time = time(); $expected = array('Date' => gmdate("D, j M Y G:i:s ", $since) . 'GMT', 'Last-Modified' => gmdate("D, j M Y H:i:s ", $since) . 'GMT', 'Expires' => gmdate("D, j M Y H:i:s", $time) . " GMT", 'Cache-Control' => 'public, max-age=0'); $response->cache($since, $time); $this->assertEquals($expected, $response->header()); }