/** * Send javascript file content with as much caching as possible * @param string $jspath * @param string $etag * @param string $filename */ function js_send_cached($jspath, $etag, $filename = 'javascript.php') { require(__DIR__ . '/xsendfilelib.php'); $lifetime = 60*60*24*60; // 60 days only - the revision may get incremented quite often header('Etag: "'.$etag.'"'); header('Content-Disposition: inline; filename="'.$filename.'"'); header('Last-Modified: '. gmdate('D, d M Y H:i:s', filemtime($jspath)) .' GMT'); header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .' GMT'); header('Pragma: '); header('Cache-Control: public, max-age='.$lifetime); header('Accept-Ranges: none'); header('Content-Type: application/javascript; charset=utf-8'); if (xsendfile($jspath)) { die; } if (!min_enable_zlib_compression()) { header('Content-Length: '.filesize($jspath)); } readfile($jspath); die; }
/** * Send the JavaScript uncached * @param string $content * @param string $mimetype */ function combo_send_uncached($content, $mimetype) { header('Content-Disposition: inline; filename="combo"'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT'); header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 2) . ' GMT'); header('Pragma: '); header('Accept-Ranges: none'); header('Content-Type: ' . $mimetype); if (!min_enable_zlib_compression()) { header('Content-Length: ' . strlen($content)); } echo $content; die; }
header('Etag: '.$etag); header('Content-Disposition: inline; filename="'.$filename.'"'); header('Last-Modified: '. gmdate('D, d M Y H:i:s', filemtime($file)) .' GMT'); header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .' GMT'); header('Pragma: '); header('Cache-Control: public, max-age='.$lifetime); header('Accept-Ranges: none'); header('Content-Type: '.$mimetype); if (xsendfile($file)) { die; } if ($mimetype === 'text/css' or $mimetype === 'application/javascript') { if (!min_enable_zlib_compression()) { header('Content-Length: '.filesize($file)); } } else { // No need to compress images. header('Content-Length: '.filesize($file)); } readfile($file); die; function jquery_file_not_found() { // Note: we can not disclose the exact file path here, sorry. header('HTTP/1.0 404 not found');
function send_cached_js($jspath) { $lifetime = 60*60*24*30; // 30 days header('Content-Disposition: inline; filename="javascript.php"'); header('Last-Modified: '. gmdate('D, d M Y H:i:s', filemtime($jspath)) .' GMT'); header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .' GMT'); header('Pragma: '); header('Cache-Control: max-age='.$lifetime); header('Accept-Ranges: none'); header('Content-Type: application/javascript; charset=utf-8'); if (!min_enable_zlib_compression()) { header('Content-Length: '.filesize($jspath)); } readfile($jspath); die; }
function theme_essential_send_cached_css($path, $filename, $lastmodified, $etag) { global $CFG; require_once $CFG->dirroot . '/lib/configonlylib.php'; // For min_enable_zlib_compression(). // 60 days only - the revision may get incremented quite often. $lifetime = 60 * 60 * 24 * 60; header('Etag: "' . $etag . '"'); header('Content-Disposition: inline; filename="' . $filename . '"'); if ($lastmodified) { header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastmodified) . ' GMT'); } header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $lifetime) . ' GMT'); header('Pragma: '); header('Cache-Control: public, max-age=' . $lifetime); header('Accept-Ranges: none'); header('Content-Type: text/css; charset=utf-8'); if (!min_enable_zlib_compression()) { header('Content-Length: ' . filesize($path . $filename)); } readfile($path . $filename); die; }
/** * Sends a cached CSS file * * This function sends the cached CSS file. Remember it is generated on the first * request, then optimised/minified, and finally cached for serving. * * @param string $csspath The path to the CSS file we want to serve. * @param string $etag The revision to make sure we utilise any caches. */ function css_send_cached_css($csspath, $etag) { $lifetime = 60 * 60 * 24 * 60; // 60 days only - the revision may get incremented quite often header('Etag: "' . $etag . '"'); header('Content-Disposition: inline; filename="styles.php"'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($csspath)) . ' GMT'); header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $lifetime) . ' GMT'); header('Pragma: '); header('Cache-Control: public, max-age=' . $lifetime); header('Accept-Ranges: none'); header('Content-Type: text/css; charset=utf-8'); if (!min_enable_zlib_compression()) { header('Content-Length: ' . filesize($csspath)); } readfile($csspath); die; }
function send_cached_css($csspath, $rev) { $lifetime = 60 * 60 * 24 * 20; header('Content-Disposition: inline; filename="styles.php"'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($csspath)) . ' GMT'); header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $lifetime) . ' GMT'); header('Pragma: '); header('Accept-Ranges: none'); header('Content-Type: text/css; charset=utf-8'); if (!min_enable_zlib_compression()) { header('Content-Length: ' . filesize($csspath)); } readfile($csspath); die; }