2011-10-30 16 views
9

私は、登録されたすべてのユーザーがデータを照会できるシステムを持っています(data.stackexchange.comに似ています)。システムが大規模になり、ユーザーのシステムへの問い合わせが増え、トラフィックが多いうちにデータベースが遅くなり、セキュリティが脅かされています。ユーザーあたりのクエリ結果のキャッシング

  1. システムをより安全にするにはどうすればよいですか?
  2. クエリの実行を高速化するにはどうすればよいですか?

私はmysqlとデータベースに関する非常に基本的な知識があり、私は学びたいと思っています。あなたは私が見たいと思うところを指摘できますか?私は何ができますか? (私は、私の自己を構築するために何のコードをお願いしないだろう)

答えて

7

さて、あなたは、システムをより安全にするためにどのようにするには、2つの大きなジョブ:)

  1. がありますか?さて、必要なところでSSLを使いましょう。データが重要でない場合は、そのデータなしで逃げることができます。つまり、あなたのログインを超安全にしたいなら、HTTPSを主張してください。その上、パスワードのハッシュ値を比較するのではなく、パスワードを直接比較することは絶対に避けてください。さらに、あなたのウェブサイトが人々の記憶を可能にする場合、トークンベースのアプローチを使用します。これにより、一定の期間有効なクッキーIDをクライアントに割り当てることができます。それは愚かではありませんが、何よりも優れています。あなたのSSLログイン要件とペアになって、それはかなり良いでしょう。

  2. キャッシュマネージャーをご覧ください。しかし、あなたがする前に、最も時間を費やしているものにぶら下げてください。どのような特定のページがあなたのウェブサイトを最も打つのですか?残念ながら、完全にウェブサイトに依存するキャッシング戦略を考え出すことができたら、 1つのサイトで動作するものは、あなたのために受け入れられません。いくつかの種類のmemcacheを使用して共通のものを格納することができ、基本的な "フロントページ"と "ポータル"クエリが効率的にキャッシュされます。残りの部分は通常の方法で処理する必要があります。

+0

ありがとうございます。 –

+0

HTTPSはSQLインジェクションに対して保護していません。なぜ結果をテーブルにキャッシュしないのですか? –

+0

@ JamesM。どうすればいい? –