1

私は最近、phpのob_gzhandler関数を使用してコンテンツのgzippingを実装しました。これにより、物事が非常にシンプルになります。

現在、このコンテンツをmemcacheに追加しようとしており、それを行う簡単な方法もあることを望んでいましたが、これを達成するためのオンラインで何も見つけることができませんでした。

過去にmemcacheを使用して変数に保持されたデータを保存したことがありますが、ob_gzhandlerを使用すると、データを含む変数がありません。ですから、残念ながら、これからどこから始めればよいのかさえわかりません。

ありがとうピート

-----詳細については編集-------------------------Codyが以下にコメントしているように、どうやら私の質問は曖昧でした。申し訳ありませんが、できるだけ多くの情報を提供しようとしていますが、このプロセスでは本当に少し迷っています。

以前にmemcacheを使用したことがありますが、URLリクエストのハッシュに基づいて、データがmemcacheに存在するかどうかを確認しました。一致するものがあった場合、私はキャッシュされたデータを取得しました。そうでない場合は、ページを作成してキャッシュに保存します。

今、私は同じことをしようとしていますが、phpob_gzhandlerを使用してgzip圧縮されたデータを使用しています。

しかし、Ciaranが述べているように、gzipで圧縮されていないデータを保存するだけの方が理にかなっているかもしれません。

同時に、gzipで圧縮されたバージョンを保存する方がよいでしょう。どちらも小さいので、キャッシュにより多く保存でき、ほとんどすべてのブラウザーがgzipで互換性がありませんか?

4

3 に答える 3

1

パッシブキャッシュについて質問しているようです。この場合、キャッシュをクエリするコードがあり、キャッシュミスが発生すると、データが生成され、キャッシュに挿入されて返されます。簡単に言うと、コードは常にデータのチャンクを返しますが、計算によってデータを返すか、キャッシュをヒットすることによってデータを返すかは、呼び出し先のコードは関係ありません。

これは正しいです?

最終的に、あなたの質問は曖昧であり、十分な情報が含まれていません。

于 2009-04-04T04:42:25.957 に答える
1

ob_gzhandler() は、クライアント ブラウザが gzip をサポートしているか、deflate をサポートしているか、エンコーディングをサポートしていないかに応じて、文字列または false を返します。おそらく、ob_start() などを介してこの関数を使用しています。

結果はクライアントごとに異なるため、結果をキャッシュしようとするのは良い考えではありません (つまり、場合によっては FALSE になり、場合によっては 'deflate' でエンコードされた応答になり、他の場合には' 「gzip」でエンコードされた応答になります)。

gzip されているコンテンツをキャッシュし、リクエストごとに再圧縮される「ヒット」を取得する方が理にかなっているように思われます。実際には、これは大きなオーバーヘッドにはなりません。

于 2009-04-04T11:33:23.147 に答える
0

ストレージに転送されるバイト数を減らすだけの場合、サイズに応じて、memcache に送信する前にデータを圧縮できるクライアントが多数あります (50K の圧縮は便利ですが、5 バイトの圧縮はそれほど多くありません)。@Ciaran が言うように、必要に応じて最終的な配信のために再圧縮するためのオーバーヘッドはそれほど大きくありません。

于 2009-04-04T16:54:44.450 に答える