1

私は自分のウェブサイトでonappapiを使用しており、ページではonapp内のすべてのサーバーをフェッチしています。一部のユーザーにとって、このリストは非常に大きく、場合によっては数千に及ぶこともあります。応答はデータだけでなく、他の情報も含まれています。また、私はページ付けを行っています。したがって、APIごとに呼び出す必要があり、データを入力する必要があります。これの速度を上げるために、私はファイルへの応答を書き、それから読み取ります。しかし、それも時間がかかります。とにかくこの操作を高速化することはありますか?

ファイルをキャッシュする前は、各ページに約45秒かかりましたが、現在は25秒に短縮されています。ただし、これも高い値です。私はSymfonyフレームワークを使用しています。データをファイルにキャッシュするために次のコードを使用しています。

   $userStatisticsCached=unserialize(file_get_contents($filePath));
    if(is_null($userStatisticsCached)||$userStatisticsCached==false){
        $userStatistics = $statisticsInstance->getList(1);
        file_put_contents($filePath, serialize($userStatistics));
    }
    else {
        $userStatistics=$userStatisticsCached;
    }

より少ないロード時間で同じ出力を達成するためのより良い方法はありますか?

4

1 に答える 1

2

最初: 45秒はページをロードするのにたくさんあります。いくつのAPI呼び出しを行っていますか?

2番目:おっと、すべてのAPI呼び出しがすでにファイルシステムにキャッシュされている場合の25秒も絶対に巨大です。ページの読み込みはいくつのファイルシステムルックアップを実行しますか?25秒のページ負荷を測定するときに、すべてのAPIリクエストがキャッシュされていることを確認しますか?

インメモリキャッシュ: データのサイズによっては、キャッシュルックアップを高速化するために、キャッシュされたデータをメモリに保存することをお勧めします。約1GB以下のキャッシュの場合、問題になることはありません(実行しているサーバーハードウェア/ホスティングプロバイダーによって異なります)。優れた最初の選択肢はMemcacheです。これは、たまたま優れたPHPサポートを備えています。

Memcacheの実行:コンピューターでローカルで作業している場合は、問題なくインストールできmemcachedます。ウェブサイトをサーバーにアップロードするときは、Memcacheが同じサーバーで実行されていることを確認するか、サーバーホスティングプロバイダーにmemcacheサーバーへの接続方法の詳細を問い合わせる必要があります。ほとんどのPHPホスティングプロバイダーは、ホスティングの一部としてMemcacheを提供しています。そうでない場合は、MemCachierなどのホストされたリモートmemcacheプロバイダーを使用できますが、リモートサーバーへの遅延により、キャッシュルックアップが遅くなります。

于 2012-09-18T21:55:22.690 に答える