no more cache – force the reload based on the file date [ 974 views ]
Goal: avoid cache in case of changed files
The cache is our friend in case of old files. With this code I can use the cache based on my file date.
<link href="css/main.css?<?php echo(filemtime("css/main.css")); ?>" rel="stylesheet" type="text/css" />
the result is
<link href="css/main.css?1402529381" rel="stylesheet" type="text/css">
In a little bit friendly shape:
... class no_cache{ public static function css($fileName){ echo('<link rel="stylesheet" type="text/css" href="'.self::get_file($fileName).'" media="screen"/>'); } public static function js($fileName){ echo('<script src="'.self::get_file($fileName).'"></script>'); } public static function file($fileName){ echo(self::get_file($fileName)); } public static function get_file($fileName){ return $fileName . '?' . filemtime($fileName); } } ... <?php no_cache::css('css/main.css'); no_cache::js('js/jquery-1.7.1.js'); no_cache::js('js/main.js'); ?> ... /* and the output is */ <link rel="stylesheet" type="text/css" href="css/main.css?1403178760" media="screen"> <script src="js/jquery-1.7.1.js?1368082485"></script> <script src="js/main.js?1402517230"></script> ...
Shorter, smarter…
Call the no_cache class like
css: no_cache::css('css_file_path'); js: no_cache::js('js_file_path'); file: no_cache::file('file_path');