缓存外部XML文件,应该做些什么


Caching of external XML file, what should be done?

我在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;

缓存的目的是防止(资源昂贵的)代码在被多次请求时多次运行。

相反,您保存文件的副本(或缓存),并在短时间内收到大量请求时提供该文件。示例工作流程:

  1. 用户A请求文件
  2. 系统检查缓存文件是否存在
  3. 缓存文件不存在。创建一个,保持5分钟。(资源昂贵)
  4. 提供缓存文件
  5. 3分钟后,用户B请求文件
  6. 系统检查缓存文件是否存在
  7. 缓存文件存在
  8. 提供缓存文件。(节省了大量资源)
  9. 3分钟后,用户C请求文件
  10. 系统检查缓存文件是否存在
  11. 缓存文件过期,重新创建,保存5分钟
  12. 等等

在高流量网站上,或者在数据不太可能更改的应用程序中,这是一种有效的方法,但检查它会耗费大量资源。