2012-04-04 5 views
0

私はmod_pythonで実装小さなダイナミックなサイトを持っています。私はこれを継承しましたが、コンテンツとロジックに比較的小さな変更を加えても、HTTPキャッシュを使用すると、私は徹底的に外れています。サイトには、すでに正常に動作しますので、これは、動的なサイトのためにどのように無効キャッシュに関する「いつもの質問」ではありません。クライアントが選択したイメージコンテンツをキャッシュできるようにmod_pythonサイトを取得するには?

私の問題は、サイトの帯域幅の約90%を占めるが、私が言うことができる限りキャッシュされていない各ページ(同じページの同じURLからの同じ画像)に1つの大きなバナー画像があることです。新しいページをクリックするたびに(または以前に訪問したページに)クリックするたびにサイトを参照するので、もう一度それをダウンロードしています。

私は私が見る(ヘッダを参照すること)バナーの画像URLをwgetの場合:

$ wget -S http://example.com/site/gif?name=banner.gif 
--2012-04-04 23:02:38-- http://example.com/site/gif?name=banner.gif 
Resolving example.com... 127.0.0.1 
Connecting to example.com|127.0.0.1|:80... connected. 
HTTP request sent, awaiting response... 
    HTTP/1.1 200 OK 
    Date: Wed, 04 Apr 2012 22:02:38 GMT 
    Server: Apache/2.2.14 (Ubuntu) 
    Content-Location: gif.py 
    Vary: negotiate 
    TCN: choice 
    Set-Cookie: <blah blah blah> 
    Connection: close 
    Content-Type: image/gif 
Length: unspecified [image/gif] 
Saving to: `gif?name=banner.gif' 

とそれを提供されたコードは

req.content_type = 'image/gif' 
    req.sendfile(fullname) 

フルネームよりもはるかにではありませんリクエストのnameパラメータからmungedされたファイルパスです。

私の質問は:有効期限設定の線に沿っていくつかの簡単な修正がある:またはヴァリ:クライアントはそれを繰り返しダウンロードするあまり熱心であることになり、画像のリクエスト・レスポンスのフィールド?

サイトでは、Ubuntuの10.04でホストされていると、任意の非デフォルトのApacheの改造が書き換え以外に有効になっていません。

私は、サイトのページヘッダの(すべてではない)ほとんどは自身が含まれていないことに注意して

Pragma: no-cache 
Cache-Control: no-cache 
Expires: -1 
Vary: Accept-Encoding 

(および無キャッシュが非静的に選択的に適用されていないとして、元のサイトの作者は明らかにこのことについて考えていますコンテンツページ)。私はキャッシングについて十分に知っていないので、これが何とかインクルードされた.gif IMGが毎回リロードされるかどうかを知ることができません。

答えて

1

私の答えはあなたを助けたりすることができない場合、私は知らないが、私はとにかくそれを投稿してください。 pythonアプリケーション内からイメージファイルを提供する代わりに、スタティックファイルとイメージファイルを提供するだけで、同じサーバー上の別の仮想ホストをApache内に作成することができます。 Pythonアプリケーションでは、あなたは、モードヘッダを使用して、さまざまなコンテンツタイプに様々なヘッダを追加したり、静的ファイルのための別のキャッシング層を追加することができ、画像は別のバーチャルホストでは、この

<img src="http://img.yoursite.com/banner.gif" alt="banner" /> 

が好き埋め込むことができます。

このヘルプが必要です。

+0

おかげで、これは右の行に私を置く:私は、ほぼ同じことをやってしまったと単純に同じドメイン上の別のパスに出バナー画像ファイルを移動し、完全に動的なものを避け、1ページテンプレートの更新それを参照してください。そして、サイトはただちにバナーが1ページごとにダウンロードされるのを待っているのではないでしょうか。 – timday

関連する問題