PHP サイトの HTML キャッシュを実装するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/55223

  •  09-06-2019
  •  | 
  •  

質問

PHP サイトにキャッシュを実装する最良の方法は何ですか?もちろん、キャッシュすべきではないものもいくつかあります (検索クエリなど) が、「ディグ効果」を確実に回避できる適切なソリューションを見つけたいと考えています。

WordPress 用の WP-Cache があることは知っていますが、WP 上に構築されていないカスタム ソリューションを作成しています。(十分に単純であれば) 独自のキャッシュを作成することに興味があります。または、優れた軽量のフレームワークを教えていただけますか。ただし、私は Apache についてはあまり詳しくないので、PHP フレームワークであれば、より適しているでしょう。

ありがとう。

役に立ちましたか?

解決

プロキシ キャッシュが問題外で、完全な HTML ファイルを提供している場合は、PHP を完全にバイパスすることで最高のパフォーマンスが得られます。勉強方法 WPスーパーキャッシュ 動作します。

キャッシュされていないページは、サイトと同様の URL 構造を持つキャッシュ フォルダーにコピーされます。後のリクエストでは、mod_rewrite はキャッシュされたファイルの存在を記録し、代わりにそれを提供します。他の RewriteCond ディレクティブは、コメント投稿者/ログイン ユーザーにライブ PHP リクエストが確実に表示されるようにするために使用されますが、訪問者の大部分は Apache によって直接処理されます。

他のヒント

使用できます 出力バッファリング 出力の一部 (キャッシュしたい部分) を選択して保存し、時間が十分でない場合は次のユーザーに表示します。この方法では、ページの他の部分 (カスタマイズ可能なボックス、個人情報など) をその場でレンダリングすることができます。

最善の方法は、プロキシ キャッシュ (Squid、Varnish) を使用し、適切な Cache-Control/Expires ヘッダーと ETag を提供することです。見る Mark Nottingham のキャッシング チュートリアル キャッシュの仕組みと、キャッシング プロキシから最大限のパフォーマンスを引き出す方法について詳しく説明します。

こちらもチェックしてください memcached, 、そこにデータベース クエリ (あるいは、事前にレンダリングされたページ フラグメント) をキャッシュしてみてください。

私がお勧めします Memcached または APC. 。どちらも、非常にシンプルな API と多数のライブラリを備えたインメモリ キャッシュ ソリューションです。

これら 2 つの問題は、Web サーバーまたは Memcached の場合は別のサーバーにインストールする必要があることです。

APC

長所:
  • 単純
  • 速い
  • PHPの実行も高速化します
短所
  • 分散システムでは機能せず、各マシンがキャッシュをローカルに保存します

Memcached

長所:
  • 速い(っぽい)
  • すべての Web サーバーが使用できるように別のサーバーにインストール可能
  • LiveJournal で開発された高度なテスト済み
  • すべての大手企業 (Facebook、Yahoo、Mozilla) によって使用されています

    短所:
  • APCよりも遅い

  • ネットワーク遅延の可能性
  • もう少し構成

自分で書くことはお勧めしません。世の中にはたくさんあります。Web サーバーにソフトウェアをインストールできない場合は、ディスク ベースのキャッシュを使用することもできますが、競合の問題に対処する必要がある可能性があります。1 つのリクエストがファイルへの書き込みを行っている間に、別のリクエストが読み取りを行っている可能性があります。

実際には、数秒から 1 分間であっても、検索クエリをキャッシュすることができます。データベースが 1 秒間に数回以上更新されない限り、多少の遅延は問題ありません。

PHP Smarty テンプレート エンジン (http://www.smarty.net) には、かなり高度なキャッシュ システムが含まれています。

詳細については、Smarty マニュアルのキャッシュ セクションを参照してください。 http://www.smarty.net/manual/en/caching.php

PHP キャッシュ フレームワークを探しているようです。非常に優れた CacheSystem プラグインが付属するテンプレート システム TinyButStrong をお勧めします。シンプル、軽量、カスタマイズ可能 (HTML ファイルのどの部分でもキャッシュできます)、非常に強力です ^^

ページまたはページの一部の単純なキャッシュ - Pear::CacheLite クラス。私も APC と memcache をさまざまな用途に使用していますが、これまでに見た他の回答は、より完全で複雑なシステムを対象としています。ページの一部を再構築する手間を省く必要があるだけの場合は、ファイルバックアップ ストアを備えた Cache_lite で十分であり、実装は非常に簡単です。

プロジェクトガゼル (オープンソースの torrent サイト) では、このサイトで Memcached をセットアップするためのステップバイステップのガイドが提供されています。このガイドは、大量のトラフィックを処理するセットアップ対象の他の Web サイトでも簡単に使用できます。

ソースを入手してドキュメントを読んでください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top