2012-02-11 12 views
0

私は自分のカスタムHttpModuleでASP.NET Webアプリケーションを持っています。このモジュールは、ブラウザがmodule.jsを要求したかどうかをチェックします。もしそうなら、それは次のヘッダーで生成されるJavaScriptファイルを返します。ブラウザがまだサーバーからリソースを引き出すのはなぜですか?

Cache-Control:public, max-age=600 
Content-Type:text/javascript; charset=utf-8 
Date:Sat, 11 Feb 2012 03:15:00 GMT 
Expires:Sat, 11 Feb 2012 03:25:00 GMT 
Server:Microsoft-IIS/7.5 
Transfer-Encoding:chunked 
X-AspNet-Version:4.0.30319 
X-Powered-By:ASP.NET 

をそうmodule.jsは10分間キャッシュされなければなりません。しかし、一度私はページをリフレッシュ - 私は新しく生成されたjavascriptファイルを受け取ります(しかし、ブラウザでキャッシュされません)。それはなぜそうですか?

ところで、私はそれがサーバー上でキャッシュされたくないので、私はそれがブラウザにキャッシュされるようにしたい、web.configで無効に出力キャッシュをしました:

<modules> 
      <remove name="OutputCache" /> 

ここに私のモジュールのコードがあります:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title>  
</head> 
<body> 
    <script src="module.js" type="text/javascript"></script> 
</body> 
</html> 

だからたびに、私はREF:

public class JSModule: IHttpModule 
{ 
    public CSSModule() 
    { 
     // 
     // TODO: Add constructor logic here 
     // 
    } 

    public void Init(HttpApplication context) 
    { 
     context.BeginRequest += new EventHandler(OnBeginRequest); 

    } 

    private void OnBeginRequest(object sender, EventArgs e) 
    { 
     HttpApplication context = (HttpApplication)sender; 
     if (context.Request.Url.PathAndQuery.Contains("module.js")) 
     { 
      context.Response.ContentType = "text/javascript"; 

      context.Response.Cache.SetCacheability(HttpCacheability.Public); 
      context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(10)); 
      context.Response.Cache.SetMaxAge(new TimeSpan(0, 10, 0)); 

      context.Response.Write(string.Format("console.log({0});", (int)context.Application["counter"])); 
      context.Application["counter"] = (int)context.Application["counter"] + 1; 
      context.Response.Flush(); 
     } 
    } 

    public void Dispose() 
    { 

    } 
} 

そしてここでは、私のページのHTMLですreshページ私はChromeのコンソールで数字を増やしています。しかし、私は10分ごとに変更する番号を確認したいと思います。それをどうすれば実現できますか?

答えて

2

ページを「更新」すると、ブラウザはキャッシュ状態に関係なくすべてのリソースを要求します。キャッシングが機能しているかどうかをテストするには、リンクをクリックするか、アドレスバーのアドレスを選択して[ENTER]を押す必要があります。 'リフレッシュ'は使わないでください。

関連する問題