0

我已经可以创建动态页面,并且可以正常工作,但是登录页面加载速度非常慢。

我真的很想得到一些帮助。以下是我的网站的功能。

让我们从以下链接开始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 和一般开发都很陌生)。登陆页面的页面加载速度没有改变。

4

1 回答 1

0

正如评论中提到的,在当前的情况下,您的脚本不能比查询 API 的响应时间快。

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

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

每种方法都有其优点和缺点,选择一种解决方案而不是另一种解决方案也取决于 API:

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

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

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

于 2013-02-19T22:34:24.207 回答