使用PHP动态,快速地生成页面

时间:2013-02-19 22:05:57

标签: php performance api dynamic

我已经可以创建动态页面,但它正常工作,但登陆页面的加载速度非常慢。

我真的很想得到一些帮助。以下是我的网站的运作方式。

让我们从http://example.com/search.php中的链接开始:

<?php 

session_start(); 

//(pretend there is code here that gets, decodes, and displays data from an api)

$title = $titleFromApi;
$a = $dataFromApi;


$_SESSION['storeTitle'] = $title;     // stores 'title' in a session  variable       
$_SESSION['store_a']    = $a;         // stores 'a' in a session variable

echo '<a href="http://example.com/'. $a .'/' . $title .'> ' . $title . '</a>';

// the line above is a clickable link that will take them to the landing page 


?>

现在这里是着陆页(http://example.com/$a/$title):

<?php

session_start();


$al = $_SESSION['store_a'];     // stores session variable in new variable 'al'

$getter = 'http://api.somewebsite.com/dev/' . $al . '/get_these_variables'; 

// the line above gets data from an api using variable 'al'

// (pretend that there is code here that decodes the data)

// the code below displays the data retrieved from the api

foreach($data as $entry){

echo '

 <div> 
  ' . $entry['decoded_data_1'] 
  . ' 
 </div>


 <div> 
  ' . $entry['decoded_data_2']            // and so on
  . ' 
 </div>

';                                        // ends echo

}

?>

我刚学会了今天的课程(我认为这会让事情变得更快);之前,我将数据从search.php发送到地址栏,然后在着陆页上读取它以携带变量(畏缩​​,我知道,我对php和开发一般都很新)。目标网页的页面加载速度没有改变。

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,在其当前形状中,您的脚本的速度不会超过查询API的响应时间。

您没有对API进行任何说明,因此无法保证该区域的加速。但是,如果该API始终为同一查询返回相同的结果,则可以通过实现结果缓存来缓解此问题。

基本上,您应该在持久数组中存储由其参数索引的查询结果,并且每次进行查询时,检查结果是否已经存在。您可以选择将该数组作为会话值,database或基于内存的缓存机制,如memcache

每种方法都有利有弊,选择一种解决方案也取决于API:

  • 基于会话的缓存将受到每个客户端的限制,这将大大降低其有效性,但如果API的使用必须是客户机密,则可能是强制性的,
  • 如果基于数据库的访问速度比API服务器快,则基于数据库可能会有所帮助,例如。带宽足够大的本地数据库
  • memcache选项应该是最快的,但如果必须重新启动服务,缓存数据将会丢失,

您也可以将db和memcache结合起来,以获得前者持久性的速度。

这是假设您可以在某种程度上预测查询是否可以缓存,以及它将保持多长时间。您还需要对服务器配置进行一些控制,或者希望它已经支持上面讨论的功能。