5

我目前正在开发一个使用 PHP 函数来获取 JSON 数据并将其显示在页面上的站点。但是,在加载页面时,它会冻结,直到它成功获得响应,这看起来很奇怪,因为它还没有加载结束的 html 标记。

我可以使用 Javascript 进行 ajax 调用,这将在页面加载后异步发生,但由于页面是静态的,我使用 PHP 缓存它们,这样就不会缓存响应。

有没有办法在使用 PHP 加载页面后进行 PHP JSON 调用,或者我可以缓存 javascript JSON 响应吗?

4

2 回答 2

3

我将从内联执行的 JSON 提取中删除并使用 JavaScript 进行 AJAX 调用。从那里,您可以通过您网站上的独立 PHP 脚本运行 JSON,并添加一些额外的缓存,如 apc,以加快 PHP 调用。

在 apc 缓存上,您需要安装 mod_apc。查找 apc_fetch 和 apc_store 函数调用,您可以使用它们来缓存 JSON,而不必经常进行昂贵的调用。

如果您正在执行所有 API 参数都在 url 中的 GET 请求,您可以执行类似的操作来加快重复 AJAX 请求。

$url = "http://songkick.com/api/url/to/whatever";
$apcKey = "url:$url";

$data = apc_fetch($apcKey);
if(!$data) {
  $data = file_get_contents($url); //or curl, or whatever you're using.
  apc_store($apcKey, $data); //save for next time.      
}

echo $data;
于 2013-06-07T19:11:50.040 回答
1

您采用的方法称为“引导”。在可能的情况下分离组件通常是一种好习惯,但是,在您的情况下,如果您将大量数据引导到页面,最好保持原样并缓存生成的 html(Cloudflare 是我的最爱工具)。

对大量数据运行异步 javascript 请求可能会导致不合需要的前端加载时间 - 特别是如果您需要先加载 jQuery 等必备库。

引导的 JSON 越大,使用 PHP 的情况就越好。

于 2013-06-07T19:18:25.847 回答