为什么在整页回发后我会从浏览器缓存中丢失我的javascript?

时间:2010-04-22 09:54:47

标签: asp.net javascript

我有一个外部javascript文件,我在后面的代码中包含在我的页面中(如下所示)。

我的问题是,当我的页面进行回发(不是部分回复)时,我使用FireBug检查加载的脚本,并且在回发后我看不到列表中的javascript文件。一旦它被包含在第一次加载的页面上,我就会进行操作,浏览器将缓存它以便我不需要重新包含它。

我做错了什么?

我包含脚本的方式如下:

protected override void OnInit(EventArgs e)
{

    if (this.Page.IsPostBack==false)
    {
        if (this.Page.ClientScript.IsClientScriptIncludeRegistered("ctlPalletDetail")==false)
        {
            string guidParamToHackBrowserCaching = System.Guid.NewGuid().ToString();
            this.Page.ClientScript.RegisterClientScriptInclude("ctlPalletDetail", ResolveUrl(String.Format("~/clientScripts/ctlLtlRequestDetail.js?par={0}",guidParamToHackBrowserCaching)));
        }
    }

    base.OnInit(e);
}

1 个答案:

答案 0 :(得分:4)

浏览器缓存它以便在回发时再次下载。 但您仍然需要在页面上注册脚本以告诉浏览器实际使用缓存的脚本到页面中。

或换句话说:在服务器上注册脚本将呈现< script>在提供的页面上标记将告诉浏览器实际使用该脚本文件。

脚本是在本地缓存还是不在客户端上没有任何影响。如果脚本尚未缓存,则浏览器将下载它。如果它被缓存,它将不会使用它,除非你告诉它(通过< script>标记)