2016-07-22 10 views
0

私はクライアントが用語を検索し、結果がajaxリクエストによって取得されるウェブサイトを持っています。 php側では、呼び出されたスクリプトはキャッシュの日付(キャッシュはファイル)をチェックし、設定された時間より古い場合は結果をリフレッシュし、それ以外の場合はキャッシュファイルの内容を返します:die(file_get_contents($cache_path)); キャッシュ時間は数時間です。リフレッシュするには数秒かかります。したがって、リクエストの最大部分はキャッシュレスポンスになります。 私はheader("location: $cache_path");を使用すると、サーバーにストレスの少ないものになると考えました。なぜなら、スクリプトを通過させずにキャッシュファイルから内容を取得するようにブラウザに指示するだけなのでです。 キャッシュファイルのパスが公開されることは欠点です(これはコンテンツが同じなので最大の問題ではありません)が、リソースの場所を指定することは決して良いことではありません。 したがって、 file_get_contentsとリダイレクトの間に大きな違いがありますか?平均キャッシュファイルのサイズは120kbです...他のアイデアや提案はありますか?phpヘッダの場所vs file_get_contents performace

+0

要求の中で最も長い部分は、しばしばネットワークの待ち時間とオーバーヘッドです。クライアントをリダイレクトすると別のリクエストが発生しますが、リクエストは遅くなる可能性があります。パフォーマンスが心配な方は、メモリキャッシュを設定してください。 – miken32

答えて

0

「内部リダイレクト」は、nginxの場合はX-Accel-Redirectヘッダー、Apacheの場合はX-Sendfileを使用できます。この場合、クライアントに追加のURLは表示されず、スクリプト内のキャッシュファイルは処理されません。

設定の詳細については、an official documentation、または他のSOの質問(this oneなど)を読むことができます。