私は、MySQLテーブルにデータをキャッシュする(共有ホスティングはmemcachedなので)テーブルを持っています。MySQLのジレンマ
私はページを持っている負荷(静的)データと、その後キャッシュ:
コンセプトはこれです、それはページを照会
- キャッシュが存在しない場合は、HTMLをレンダリングし、それをキャッシュテーブルに保存します。
- ページがキャッシュに存在しない場合、12のクエリ(メニュー、ページコンテンツ、SEO、プロダクトリストなど)を実行し、レンダリングされたHTMLをテーブルに保存します。
キャッシュテーブルはこのようなものです:
=cache=
url varchar(255) - primary key
page mediumtext
は、今私は、私は(共有ホストなどmemcachedの、のようなキャッシングなし)持っているものに基づいて、私は正しいことをやっていると思いますが、私の質問はこれです:URLはvarchar
指標であるので
けど(int
のような)数値IDが高速であるため、ユニークな整数に/contact-us/
または/product-category/product-name/
のようなURLに変換する方法はありますか?あるいはこれを最適化する他の方法がありますか?
は、通常のAUTO_INCREMENT int型主キーを使用するすべてのハッシュcolisionsで正確なURLを検索し、ハッシュですべてのキャッシュされたURLを選択して、ユニークな(しかし、主要ではない)として、URLを保存するキーフィールド。物を参照するときにintを運ぶ方が簡単です。 urlテキストを使用してauto_inc idを検索します。 –
だから、まだIDではなくURLでルックアップする必要がありますか? – Alexei
12個のクエリをキャッシュしますか?それほど多くはありません。 。 。複雑かどうかによって異なります。なぜあなたはmysqlにキャッシュを格納していますか?なぜファイルシステム上にファイルを作成せずにキャッシュとして使用するのですか? – Flukey