我目前正在开发一个使用PHP函数来获取JSON数据并将其显示在页面上的站点。然而,当加载页面时,它会冻结,直到它成功获得响应,这看起来很奇怪,因为它还没有加载结束的html标记。
我可以使用Javascript进行ajax调用,这将在页面加载后异步发生,但由于页面是静态的,所以我使用PHP缓存它们,这样响应就不会被缓存。
有没有办法让PHP JSON调用在PHP页面加载后发生,或者我可以缓存javascript JSON响应吗?
发布于 2013-06-08 03:18:26
你所采用的方法被称为“自举”。通常情况下,在可能的情况下解耦组件是一种好的做法,但是,在您的情况下,如果您正在引导大量数据到页面,可能更好的做法是让它保持原样,并缓存生成的html (Cloudflare是我最喜欢的工具)。
对大量数据运行异步javascript请求可能会导致不期望的前端加载时间-特别是如果您有像jQuery这样的必备库要先加载的话。
引导的JSON越大,越适合使用PHP。
发布于 2013-06-08 03:11:50
我将从内联执行中删除JSON fetch,并使用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;https://stackoverflow.com/questions/16991224
复制相似问题