1

ほとんどの場合、静的なデータが MySQL データベースにいくつかあります。それらは主に、都市、州、民族などのほとんど静的な値です。ページが読み込まれるたびに MySQL に対して別のクエリを実行する必要がないように、それらを変数、できればメモリにキャッシュしたいと考えています。

問題は、私のホスティングが memcache も APC もサポートしていないことです。私が見つけた唯一のアクセラレーターは eAccelerator であり、私が考えていることを実行するとは思えません。

キャッシングを行う方法はありますか?http://www.k-disk.netです

ありがとうございました

4

4 に答える 4

3

キャッシングは、プログラミングにおける時間と空間のトレードオフの好例です。スペースを使用して結果を保存することで、時間を節約できます。[1]

Web サイトにキャッシュを実装するには、多くのレベルで多くの方法があります。あまり詳細には触れずに、フロントエンドからバックエンドに向かってそれらを見てみましょう。

HTTP キャッシング

HTTP キャッシングでサイトを最適化する方法を見る

アプリケーション レベルのキャッシュ

これは、「クエリに費用がかかる」データベース オブジェクトのキャッシュです。例: memcache、ファイル内のページのキャッシュなど。

オペコードキャッシュ

例: PHP アクセラレーター、eAccelerator など。

データベース レベルのキャッシュ

ニーズとマシンのハードウェアに基づいてパラメーターを調整することにより、データベースを最適化します。

あなたの場合、十分な RAM があれば、MySQL は非常に高速なので、my.cnf を微調整することをお勧めします。事前に最適化しないようにしてください。

于 2011-07-15T07:21:13.413 に答える
2

シリアル化された変数のphp配列を保存するファイルをサーバーに書き込むだけです。すべての変数を連想配列にプラグインし、シリアル化して保存するだけです。正直なところ、変数をデータベースの変数テーブルに保存しない理由がわかりません。高価な操作ではありません。

$myvars = array(
  'how_high_do_i_jump' => 10,
  'which_tv_show_is_best' => 'Glee',
  'enable_caching' => true,
  'mathematical_solution' => 4534.234
);

$file_str = serialize($myvars);

//Save the file
file_put_contents('myvars.ser', $myvars);

//To reverse just do this
$file = file_get_contents('myvars.ser');

$myvars = unserialize($file);

それがうまくいかない場合、SSH アクセスがあれば、共有ホストで memcache を取得する方法があります。私は実際にこれをホストモンスターで行いました。これについてのウォークスルーがあります(ただし、これは私が最初に使用した記事ではありません)。
http://andrewpeng.net/posts/2011/06/271273-memcached-and-dreamhost-shared-tutorial.html

于 2011-07-15T05:37:34.787 に答える
0

file_put_contents()およびfile_get_contents()を使用して、ディスクからデータを格納および読み取るカスタムキャッシュクラスを作成できます。

于 2011-07-15T04:03:42.983 に答える