我已经可以创建动态页面,但它正常工作,但登陆页面的加载速度非常慢。
我真的很想得到一些帮助。以下是我的网站的运作方式。
让我们从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和开发一般都很新)。目标网页的页面加载速度没有改变。
答案 0 :(得分:0)
正如评论中所提到的,在其当前形状中,您的脚本的速度不会超过查询API的响应时间。
您没有对API进行任何说明,因此无法保证该区域的加速。但是,如果该API始终为同一查询返回相同的结果,则可以通过实现结果缓存来缓解此问题。
基本上,您应该在持久数组中存储由其参数索引的查询结果,并且每次进行查询时,检查结果是否已经存在。您可以选择将该数组作为会话值,database或基于内存的缓存机制,如memcache。
每种方法都有利有弊,选择一种解决方案也取决于API:
您也可以将db和memcache结合起来,以获得前者持久性的速度。
这是假设您可以在某种程度上预测查询是否可以缓存,以及它将保持多长时间。您还需要对服务器配置进行一些控制,或者希望它已经支持上面讨论的功能。