none
ScriptResource.axdとWebResource.axdのクエリパラメータ RRS feed

  • 質問

  • いつもお世話になっております。

    環境はASP.NET 4です。

    ScriptManagerなどを使ったりすると、ASP.NETは自動でScriptResource.axdとWebResource.axdという名前で
    JavaScriptコードを生成してくれていますが、その後ろについているクエリパラメータは、
    どのような規則でつけられるのでしょうか。
    例:WebResource.axd?d=RyVa7eQhvkI0Y1ewNOXnszVuJ9gy6b0ObNiCem0tSUbbKSNEMC0WyhgvsbNgsI-A0EZLYtqb9to0Tc7uTjMe0gv1AdSkeOjjLz0lN1rvThM1&t=634490809907624030

    質問の理由は、転送量の問題です。
    例えばScriptResource.axdとして生成されるMicrosoftAjax.debug.jsですが、縮小なしの7000行のコードです。
    もしクエリパラメータがころころ変わるとしたら、ブラウザのキャッシュが活かせず、えらいことになります。

    恐らくそんなことにはならないようにしてくれているのでしょうが、
    実際のところはどうなっているのでしょうか。
    ご存知の方いましたら、お願いします。

    • 編集済み femp 2011年11月18日 0:21
    2011年11月18日 0:21

回答

  • > MicrosoftAjax.debug.js

    Debug版のようです。パフォーマンスについて気になさるのなら、まずRelease版を使うべきではありませんか?

    • 回答としてマーク femp 2011年11月18日 4:00
    2011年11月18日 1:07
  • 設定ミスでしょうね。web.configに <compilation debug="true" ...> とか書いてしまっているのかな?

    繰り返しになりますが、デバッグ版で動作しているときは、キャッシュ等の影響を受けないようになっているでしょうし、リリース版でどうなるか確認することが先決だと思います。

    リリース版でも同じ動作をするなら…うーんその時答えます。

    • 回答としてマーク femp 2011年11月18日 4:00
    2011年11月18日 1:51
  • # ScriptResource.axd msdnでググりました。

    ScriptResourceHandlerクラスの説明に

    既定では、ScriptResourceHandler クラスは、Internet Explorer 7 用に埋め込みスクリプト ファイルの圧縮とキャッシュを行います。 ScriptingScriptResourceHandlerSection クラスの EnableCompression プロパティと EnableCaching プロパティを使用して、圧縮およびキャッシュを無効にできます。 これらのプロパティは Web.config ファイルで設定します。

    とありました。

    d= や t= の意味はまぁ…undocumentedですがURLを基にした値としか。

    キャッシュされているかどうかは、想像で判断せず、ブラウザー側でHTTP Responseヘッダーを確認すべきです。

    • 回答としてマーク femp 2011年11月18日 4:00
    2011年11月18日 2:22
  • > その後ろについているクエリパラメータは、どのような規則でつけ
    > られるのでしょうか。

    簡単に言えば、d= はスクリプトファイルの ID、t= は dll のタイム
    スタンプです。詳しくは以下のページが参考になると思います。

    ASP.NET AJAX アプリケーションの国際化
    http://msdn.microsoft.com/ja-jp/magazine/cc135974.aspx


    > もしクエリパラメータがころころ変わるとしたら、ブラウザのキャ
    > ッシュが活かせず、えらいことになります。

    上に紹介したページの説明によれば、不必要に「ころころ変わる」こ
    とはないので、そういう心配は無用なようです。

     

    • 回答としてマーク femp 2011年11月20日 23:54
    2011年11月18日 12:04

すべての返信

  • > MicrosoftAjax.debug.js

    Debug版のようです。パフォーマンスについて気になさるのなら、まずRelease版を使うべきではありませんか?

    • 回答としてマーク femp 2011年11月18日 4:00
    2011年11月18日 1:07
  • 回答ありがとうございます。

    例としてあげたMicrosoftAjax.debug.jsですが、デバッグ時にしか出ないものなのですか?
    IIS上でReleaseビルドで実行しても出てきたので取り上げてみたのですが・・・設定ミスでしょうか。

    とはいえ、動的生成されるのはこれだけではないので、あまり問題の本質ではないように思います。

    補足:
    先に申し上げておくべきでした。
    開発対象のアプリケーションですが、イントラネット向けのものです。
    不特定ユーザからのアクセスではなく、特定ユーザが何度もアクセスするため、
    ブラウザキャッシュが使えるかどうかが重要になります。

    追記:
    確認しました。確かに *.debug.js という名前のファイルはデバッグ版のようです。
    こっちが出てきてしまう理由についてはまた別途調べてみます。
    • 編集済み femp 2011年11月18日 1:36 追記
    2011年11月18日 1:15
  • 設定ミスでしょうね。web.configに <compilation debug="true" ...> とか書いてしまっているのかな?

    繰り返しになりますが、デバッグ版で動作しているときは、キャッシュ等の影響を受けないようになっているでしょうし、リリース版でどうなるか確認することが先決だと思います。

    リリース版でも同じ動作をするなら…うーんその時答えます。

    • 回答としてマーク femp 2011年11月18日 4:00
    2011年11月18日 1:51
  • # ScriptResource.axd msdnでググりました。

    ScriptResourceHandlerクラスの説明に

    既定では、ScriptResourceHandler クラスは、Internet Explorer 7 用に埋め込みスクリプト ファイルの圧縮とキャッシュを行います。 ScriptingScriptResourceHandlerSection クラスの EnableCompression プロパティと EnableCaching プロパティを使用して、圧縮およびキャッシュを無効にできます。 これらのプロパティは Web.config ファイルで設定します。

    とありました。

    d= や t= の意味はまぁ…undocumentedですがURLを基にした値としか。

    キャッシュされているかどうかは、想像で判断せず、ブラウザー側でHTTP Responseヘッダーを確認すべきです。

    • 回答としてマーク femp 2011年11月18日 4:00
    2011年11月18日 2:22
  • 回答ありがとうございます。
    ご指摘の通り、実際に動作させて検証した方が良さそうですね。
    ちょっとWeb.configいじりながら調べてみます。
    ありがとうございました。

    #ブラックボックスなままでの検証は、「今回はたまたまそうだった」ってことが起きかねないので、
    何か仕様についての情報があったりしないだろうかと思ったのですが・・・
    • 編集済み femp 2011年11月18日 4:02
    2011年11月18日 3:59
  • Microsoft Reference Source Code Centerから.NET 4のソースコードを入手することができます。その中にはScriptManager.csやScriptResourceHandler.csなんかも含まれていて、動作を知ることはできますよ。
    # 動作であって仕様ではありませんが。 
    2011年11月18日 4:02
  • > その後ろについているクエリパラメータは、どのような規則でつけ
    > られるのでしょうか。

    簡単に言えば、d= はスクリプトファイルの ID、t= は dll のタイム
    スタンプです。詳しくは以下のページが参考になると思います。

    ASP.NET AJAX アプリケーションの国際化
    http://msdn.microsoft.com/ja-jp/magazine/cc135974.aspx


    > もしクエリパラメータがころころ変わるとしたら、ブラウザのキャ
    > ッシュが活かせず、えらいことになります。

    上に紹介したページの説明によれば、不必要に「ころころ変わる」こ
    とはないので、そういう心配は無用なようです。

     

    • 回答としてマーク femp 2011年11月20日 23:54
    2011年11月18日 12:04
  • 回答ありがとうございます。

    パラメータはそういう意味だったんですね。

    助かりました。

    2011年11月20日 23:54