2016-05-16 5 views
0

を検索するための結果を保存します。このスクリプトでは、通常、関数呼び出しあたり0.3〜0.6秒かかります。だから私は何をしたいのですが、結果をキャッシュして毎回URLを呼び出す必要はありませんか?結果と検索条件をDBに入れるのが最善の方法でしょうか?次に機能が使用される前にそれらがDBに入っていることを確認してくださいベストな方法は、私はこの機能を持っている

どうすれば検索を迅速化し、できるだけ早くページを読み込むことができますか?

+0

"メモ"と呼ばれる非常に一般的なプログラミングテクニックを求めています。 Googleがその言葉を使い、それを実装する方法はたくさんあります。あなたは好きな方法を見つけなければなりません。 – kainaw

+0

@kainawありがとう、私は今ここで戦利品を持っています – Deckerz

答えて

0

これは現実的ですか?私はあなたのアプリケーションが何であるかはわかりませんが、ユーザーが任意のアドレスを入力できるならば、無限の距離のリストがあります。そのような重い計算のための平均0.5秒の待ち時間は非常に速いです。データベース内の何百万ものレコードを掘り起こすことは、そのAPIコールよりも時間がかかります。

しかし、このメソッドは同じパラメータ(つまりアドレス)で呼び出されることがあります。小さなデータベースやJSONファイルを設定することは悪い考えではありません。 JSONはMySQLよりもはるかに高速ですので、実際に結果をキャッシュしなければならない場合は、それを使用します。

+0

JSONはずっと速いのですか?私はJSONからどのようなパフォーマンス上のメリットが得られるのでしょうか? – Deckerz

+0

この場合はおそらくそうです。配列は、MySQLテーブルよりもずっと高速に読み込むことができます。私たちはFarkieが書いたような実際の小さな配列について話していることを覚えておいてください。正規化が必要な大規模なデータセットについては、常にDBMSを使用してください。 – Loek

+0

GoogleのToSについては、MySQLのようなDBMSを使用し、30日の作成後にすべてのレコードを削除するように設定してください。 – Loek

0

このようなことを行うには、name/key valueストアを使用する傾向があります。

リクエストパラメータとリターンレスポンスだけを格納するテーブルがあります。

Key1 | Key2 | Value | 
POSTCODE1 | POSTCODE2 | {response from google} | 

Googleに検索する直前に、まずこの表を確認してください。存在する場合は、応答を使用してください。存在しない場合は、ルックアップを行い、データベースに格納します。

私は、Googleが自分のToSでこのデータをキャッシュしてはいけないと言っていると思います。

+0

はい、キャッシュできます。しかし、最大30日間とその保存された安全に – Deckerz

+0

ああクール:)知っておいてよかった!答えの1つを正しいものとしてマークできますか? :) – Farkie

0

あなたは結果をRedis(http://redis.io/)に保存することができます。これはMemory Ramのデータベースで、速度には最適です。 :D