ブラウザではなくカスタムクライアントプログラム(つまり携帯電話)によって呼び出されているのはなぜですか?むしろ、HTTP認証(SSLに行く場合はDIGESTまたはBASIC、または独自のスキーム)を使用し、毎回「ログイン」します。
次に、セッション、ロードバランシング、フェイルオーバーなどについて心配する必要はありません。ステートレスにしておいてください。
補遺:
は確かに、DBへの少数のヒットが優れている、それだけの一般的なルールです。しかし同時に、DBへの多くのヒットは、DBサーバー上のキャッシュされたページ、または場合によってはDBサーバーに到達しないようにアプリケーションキャッシュによって処理されます。そのため、インデックス付きカラムに対する単一行クエリの場合、DBヒットは非常に安価になることがあります。
ここでは、両方が格納されていて簡単にアクセスできるかどうか、実際にはデータベースのキャッシュビットと一意のユーザーセッションの違いが考えられます。
さて、主に違いはデータとの契約にあります。キャッシュされたアイテムの寿命は、使用しているメモリー量とキャッシュされていないアクティビティーの量に比例します。それには少量のメモリを与え、キャッシュされたアイテムは非常に短い寿命を持つ可能性があります。それには多くの記憶を与え、キャッシュされたアイテムははるかに良いチャンスがあります。キャッシュされたデータのメモリー量が十分に大きい場合、そのデータの繰り返しアクティビティーが引き続きキャッシュを使用する場合、キャッシュは大きな勝利です。キャッシュがすばやくリサイクルされている場合、キャッシュ内に何も存在しないため、キャッシュはほとんど価値がありません。しかし、ポイントは、システムがキャッシュの有無にかかわらず動作することです、キャッシュは単なる性能向上です。
セッションは、契約が異なります。多くのセッションでは、特定の最小寿命があります(通常は10分、20分、さらに30分です)。
つまり、ユーザーがサイトに1回だけヒットした場合は、返信がなくてもそのユーザーにリソースを割り当てる必要があります。そうしなければ、セッションは効果的に価値を提供しません。
トラフィックが多い場合は、管理する新しいセッションがたくさんあります。理論的には、悪い状況下では、セッションは制限なくスパイクする可能性があります。突然あなたのサイトで10,000ヒットを取得した場合、セッションの最小限の寿命のためにそれらのヒットの残りを管理することになります。リソース(メモリまたはディスク)を専用にする必要があります。そのリソースを追跡しなければならず、必然的にそれらをクリーンアップする必要があります。
キャッシュは固定リソースです。それはあなたがそれを構成するサイズに成長するだけです。キャッシュに何かを保持する義務はありません。前述のように、システムはキャッシュの有無にかかわらず機能します。キャッシュは自然にリサイクルします。あなたが10,000ヒットの急増を得るならば、彼らはあなたのキャッシュをロールする可能性がありますが、その後、彼らはあなたのシステムに印を残しません。彼らはヒットして1〜2分で消えて、再び見ることはできません。
最後に、セッションでは、ユーザーがマシン間を行き来する場合(何らかの理由で)、ユーザーと一緒に移動できるようにセッションを共有する必要があります。キャッシュはしません。理想的には、キャッシュを自分の仕事をすることができるように、ユーザーがリソースのセットにローカルにしたいが、システムは移動するかどうかにかかわらず動作します(キャッシュの再利用のために、セッションを複製しないと、セッションはまったく機能しません。
DBヒットは、値段は安いかもしれませんが、決して無料ではありません。しかし、セッションには独自のコストもあります。そのため、セッション内でどのように適用されるのかを考慮することが重要です。
PHPとそのセッションは、思うよりも強力です。まだサーバーに負荷がかかっている場合(あまり遅くないようにしてください)、PHPの 'session.save_handler'ディレクティブを変更して(ファイルシステムの代わりに)セッションを保存するデータベースを使用することを検討してください。それとは別に、独自の認証ライブラリを使用する代わりに、常に安全な認証ライブラリを使用してください。例:https:// github。com/delight-im/PHP-Authは、フレームワークにとらわれず、データベースに依存しません。 – caw