diff --git a/convention.php b/convention.php index c66ef583..8152066b 100644 --- a/convention.php +++ b/convention.php @@ -107,6 +107,8 @@ return [ 'request_cache' => false, // 请求缓存有效期 'request_cache_expire' => null, + // 全局请求缓存排除规则 + 'request_cache_except' => [], // +---------------------------------------------------------------------- // | 模板设置 diff --git a/library/think/App.php b/library/think/App.php index 77721112..963d8b35 100644 --- a/library/think/App.php +++ b/library/think/App.php @@ -118,7 +118,7 @@ class App // 监听app_begin Hook::listen('app_begin', $dispatch); // 请求缓存检查 - $request->cache($config['request_cache'], $config['request_cache_expire']); + $request->cache($config['request_cache'], $config['request_cache_expire'], $config['request_cache_except']); switch ($dispatch['type']) { case 'redirect': @@ -336,7 +336,7 @@ class App $request->module($module); $config = self::init($module); // 模块请求缓存检查 - $request->cache($config['request_cache'], $config['request_cache_expire']); + $request->cache($config['request_cache'], $config['request_cache_expire'], $config['request_cache_except']); } else { throw new HttpException(404, 'module not exists:' . $module); } diff --git a/library/think/Request.php b/library/think/Request.php index b72a5aaf..d39153fd 100644 --- a/library/think/Request.php +++ b/library/think/Request.php @@ -1502,9 +1502,10 @@ class Request * @access public * @param string $key 缓存标识,支持变量规则 ,例如 item/:name/:id * @param mixed $expire 缓存有效期 + * @param array $except 缓存排除 * @return void */ - public function cache($key, $expire = null) + public function cache($key, $expire = null, $except = []) { if (false !== $key && $this->isGet() && !$this->isCheckCache) { // 标记请求缓存检查 @@ -1516,6 +1517,11 @@ class Request if ($key instanceof \Closure) { $key = call_user_func_array($key, [$this]); } elseif (true === $key) { + foreach ($except as $rule) { + if (0 === strpos($this->url(), $rule)) { + return; + } + } // 自动缓存功能 $key = '__URL__'; } elseif (strpos($key, '|')) {