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 が同じクエリに対して一貫して同じ結果を返す場合は、結果キャッシュを実装することで問題を軽減できます。

基本的に、クエリの結果は、そのパラメータによってインデックス付けされた永続配列に格納し、クエリが作成されるたびに、結果がまだそこにないかどうかを確認する必要があります。その配列をdatabase 内のセッション値にするか、 memcacheなどのメモリ ベースのキャッシュ メカニズムにするかを選択できます。

それぞれのアプローチには長所と短所があり、どのソリューションを選択するかは API にも依存します。

  • セッション ベースのキャッシュはクライアントごとに制約されるため、その有効性が大幅に低下しますが、API の使用をクライアントの機密にする必要がある場合は必須になる可能性があります。
  • アクセスがAPIサーバーよりも速い場合、データベースベースはある程度効果的です。十分に大きな帯域幅を持つローカル データベース、
  • memcache オプションは最速のものである必要がありますが、サービスを再起動する必要がある場合、キャッシュ データは失われます。

db と memcache を組み合わせて、前者の永続性を備えた後者の速度を取得することもできます。

これはすべて、クエリをキャッシュできるかどうか、およびクエリが有効である期間をある程度予測できることを前提としています。また、サーバー構成をある程度制御する必要があります。または、上記の機能が既にサポートされていることを願っています。

于 2013-02-19T22:34:24.207 に答える