0

そのため、私のサイトはあまりにも多くのリソースを使用し始めています。私のサイトのコアは、vbulletin用に正しくコーディングされていないプラグインです。残念ながら、切り替えるのはそれほど簡単ではないので、いくつかを書き直してみる必要がありますが、最も重要なのは、さまざまなパラメータがアタッチされているメインページが?image.php?id=1のように処理能力を消費しすぎることです。および?image.php?id =2..など。

とにかく、IDごとにこれらのページをhtmlにキャッシュするために使用できるものが必要です。コメントが投稿された場​​合にのみ、実際にはそれほど頻繁には変更されないため、毎回ロードするのは無意味です。私はこれまでこのようなものを扱ったことがないので、使用するためのヒント、ヒント、ソフトウェアは大歓迎です

編集:私が尋ねている理由は、ホストでのプロセッサの使用量が高くなり始めており、訪問者が増えると停止される可能性があるためです。

編集:私は次のようなシステムを考えていました:すべての?idが含まれるデータベースと、最後に変更された日付(コメントが追加されたなど)日付がhtmlとして保存された最後のキャッシュバージョンよりも古い場合は、htmlをロードします、それ以外の場合は、phpスクリプトを実行し、新しいキャッシュされたhtmlを生成します。私はおそらく自分でこのようなものを作らなければならないだろうと思いますが、そのようなものを始める方法があまりよくわかりません。

4

3 に答える 3

0

image.phpこれらを一番上に追加できます

header("Cache-Control: private, max-age=10800, pre-check=10800");
header("Pragma: private");
header("Expires: " . date(DATE_RFC822, strtotime("2 day")));

if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {

    header('Last-Modified: ' . $_SERVER['HTTP_IF_MODIFIED_SINCE'], true, 304);
    exit;
}
于 2012-08-21T17:49:38.733 に答える
0

あなたの本当の問題は今どこにありますか?データベースは静的コンテンツを呼び出しますか、それとも提供しますか?

ローカルファイルシステムを使用した単純なキャッシュから始めるべきだと私には思えます。全体的に最も遅いと述べたページをキャッシュできますか?もしそうなら、あなたはあなた自身の単純なキャッシュコードを書くことができます、ただファイルをディスクに書き、それが期限切れになっていない/無効にされていないときにそこからそれをロードするだけです。

APC、memcacedのような他のものもあり、それもあなたを助けるかもしれません。クイックグーグル検索はあなたにそこの低さを与えるでしょう。

于 2012-08-21T17:59:33.660 に答える
0

クライアント側のキャッシュに上記のコードを実装できます。サーバー側では、処理された(vbulletinが画像化/サイズ変更/トリミングなどを行ってメモリ使用量が多くなる場合)画像をファイル(一部のキャッシュディレクトリ)に保存できるため、PHPスクリプトが呼び出されるたびにそれらを処理する必要はありません。

アルゴリズム自体は、またはなどのvbulletinに必要な$_GETパラメーターのハッシュで構成する必要がありid=2ますwidth=250height=250

したがって、コードは次のようになります...

$file = 'cache_dir/'.md5('file_cached_'.$_GET['id'].'_w'.$_GET['width'].'_h'.$_GET['height']).'.jpg';
if ( ! file_exists($file))
{

  $image = get_image_by_id($_GET['id']);

  // this is just example...
  $image_blob = vbulletin_heavy_image_processing($image);

  file_put_contents($file, $image_blob);
  echo $image_blob;
}
else 
{
  echo file_get_contents($file);
}
于 2012-08-21T18:02:35.647 に答える