我在wordpress中得到了一个维护项目,我需要解析外部xml。以前的开发人员已经实现了这一点。我只是想知道这是一个好方法,还是我需要使用自己的方法。
他正在将xml缓存在一个缓存了5分钟的json文件中。他让我用ajax调用它,然后解析它。
你认为这是个好办法吗?难道我们不能直接解析xml文件而不是缓存和解析吗?
他使用外部api_cache获取xml并缓存在json文件中
PHP文件
require 'api_cache/api_cache.php';
$cache_file = 'jsonfile';
$api_call ='xmlfile';
$cache_for = 5;
$api_cache = new API_cache ($api_call, $cache_for, $cache_file);
if (!$res = $api_cache->get_api_cache()) {
$res = "{error: 'Could not load cache'}";
}
ob_start();
echo $res;
$json_body = ob_get_clean();
header('Content-Type: application/json');
header('Content-length: '.strlen($json_body));
header('Expires: '.$api_cache->get_expires_datetime());
echo $json_body;
缓存的目的是防止(资源昂贵的)代码在被多次请求时多次运行。
相反,您保存文件的副本(或缓存),并在短时间内收到大量请求时提供该文件。示例工作流程:
- 用户A请求文件
- 系统检查缓存文件是否存在
- 缓存文件不存在。创建一个,保持5分钟。(资源昂贵)
- 提供缓存文件
- 3分钟后,用户B请求文件
- 系统检查缓存文件是否存在
- 缓存文件存在
- 提供缓存文件。(节省了大量资源)
- 3分钟后,用户C请求文件
- 系统检查缓存文件是否存在
- 缓存文件过期,重新创建,保存5分钟
- 等等
在高流量网站上,或者在数据不太可能更改的应用程序中,这是一种有效的方法,但检查它会耗费大量资源。