【问题标题】:JSON - PHP vs Javascript?JSON - PHP vs Javascript?
【发布时间】:2013-06-07 19:04:49
【问题描述】:

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

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

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

【问题讨论】:

  • 你正在缓存 PHP 文件?
  • 是的,将 PHP 输出缓存到 html 文件
  • 不太清楚你在这里做什么。目前,当客户访问您的页面时,您正在使用 PHPREQUEST 一个不同的网络资源,它会发送回一个 JSON 响应,然后您将发送该响应通过访问您的页面的客户?为什么不将页面的 PHPJSON REQUEST 分开,并让客户端在页面加载后执行第二个 async 请求?
  • 抱歉没有更清楚。我的页面对 songkick.com 进行 api 调用,并返回一个包含艺术家巡演日期的 json 响应,然后我将其格式化并显示在页面上。如何使用第二个异步请求将页面的 PHP 与 JSON 请求分开?
  • 这在很大程度上取决于 JSON 是否可公开访问,或者您是否使用 API 密钥来访问它。如果您使用的是 API 密钥,则绝对不应将其发送给客户端以开始发出自己的请求。

标签: php javascript json


【解决方案1】:

我将从内联执行的 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;

【讨论】:

  • 谢谢,我来看看apc缓存。目前我只是在使用一个非常基本的页面缓存功能
【解决方案2】:

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

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

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

【讨论】:

  • 谢谢 Dave,是的,javascript 请求确实增加了加载时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 2018-09-13
  • 1970-01-01
  • 2014-04-11
  • 2019-04-24
相关资源
最近更新 更多