public static function read($module = '', $action = '') { self::$module = $module; self::$action = $action; //如果不符合静态规则,则直接返回false if (false == self::_checkRule()) { return false; } self::$cacheAble = true; //标志静态缓存可正常使用 if (isset($_SERVER['PATH_INFO'])) { $url = $_SERVER['PATH_INFO']; } else { $script_name = $_SERVER["SCRIPT_NAME"]; //获取当前文件的路径 $url = $_SERVER["REQUEST_URI"]; //获取完整的路径,包含"?"之后的字符串 //去除url包含的当前文件的路径信息 if ($url && @strpos($url, $script_name, 0) !== false) { $url = substr($url, strlen($script_name)); } else { $script_name = str_replace(basename($_SERVER["SCRIPT_NAME"]), '', $_SERVER["SCRIPT_NAME"]); if ($url && @strpos($url, $script_name, 0) !== false) { $url = substr($url, strlen($script_name)); } } } //第一个字符是'/',则去掉 if ($url[0] == '/') { $url = substr($url, 1); } //设定缓存文件名 if (empty($_SERVER['QUERY_STRING']) && preg_match("#^[a-z0-9_\\-\\/]+\\.html\$#i", $url)) { self::$cacheFile = $url; } else { self::$cacheFile = self::$module . '/' . self::$action . '/' . md5($_SERVER['REQUEST_URI']) . cpConfig::$config['APP']['HTML_CACHE_SUFFIX']; } self::$cacheFile = cpConfig::$config['APP']['HTML_CACHE_PATH'] . self::$cacheFile; $dir = dirname(self::$cacheFile); echo $dir; if (!is_dir($dir)) { @mkdir($dir, 0777, true); } if (isset(cpConfig::$config['APP']['HTML_CACHE_RULE'][self::$module][self::$action])) { $expires = cpConfig::$config['APP']['HTML_CACHE_RULE'][self::$module][self::$action]; } else { $expires = cpConfig::$config['APP']['HTML_CACHE_RULE'][self::$module]['*']; } //静态缓存文件存在,且没有过期,则直接读取 if (file_exists(self::$cacheFile) && time() < filemtime(self::$cacheFile) + $expires) { readfile(self::$cacheFile); return true; } ob_start(); //开启内容输出控制 return false; }