使用thinkphp6和querylist写一个可缓存的网页代理工具
时间: 2024-06-12 08:04:57 浏览: 114
ThinkPHP静态缓存简单配置和使用方法详解
首先,我们需要安装thinkphp6和querylist,可以通过以下命令进行安装:
```
composer create-project topthink/think myproject
composer require jaeger/querylist
```
接下来,我们需要创建一个控制器ProxyController,并添加以下方法:
```php
use think\facade\Cache;
use think\facade\Config;
use think\facade\Request;
use think\facade\Response;
use QL\QueryList;
class ProxyController
{
public function index()
{
$url = Request::param('url');
$cache_key = 'proxy_' . md5($url);
$cache_expire = Config::get('app.cache_expire', 3600);
if (Cache::has($cache_key)) {
$html = Cache::get($cache_key);
} else {
$ql = QueryList::getInstance();
$html = $ql->get($url)->getHtml();
Cache::set($cache_key, $html, $cache_expire);
}
return Response::create($html)->contentType('text/html');
}
}
```
上述代码中,我们首先获取请求参数中的url,然后通过md5将其转化为一个唯一的缓存键。接着,我们通过`Cache::has`判断缓存是否存在,如果存在,则直接返回缓存的内容,否则使用querylist获取网页内容,并将其缓存起来。最后,我们将网页内容作为响应返回,并设置响应类型为"text/html"。
最后,我们需要在路由中将该控制器和方法映射到一个URL上,例如:
```php
use think\facade\Route;
Route::get('/proxy', 'ProxyController@index');
```
现在,我们可以通过访问`http://localhost/proxy?url=https://www.baidu.com`来获取百度的网页内容,并且该内容会被缓存起来,下次再访问时将直接返回缓存的内容。
阅读全文