2010-04-22 35 views
0

我有一個外部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); 
} 

回答

4

瀏覽器被緩存它從上回傳重新下載保存。 但是你仍然需要在頁面上註冊腳本來告訴瀏覽器實際使用緩存腳本進入頁面。或者換句話說:在服務器上註冊腳本會在提供服務的頁面上呈現一個<腳本>腳本,告訴瀏覽器實際使用該腳本文件。

無論腳本是在本地緩存還是不在客戶端上都沒有任何影響。如果腳本尚未緩存,則瀏覽器將下載它。如果它被緩存了,它就不會使用它,除非你告訴它(通過<腳本>標籤)

+0

所以,這是否意味着如果我重新包含一個腳本與一個屬於一個js文件,並加載了通過瀏覽器之前,它會被註冊但不會再次加載? – pencilCake 2010-04-22 12:26:49

+0

當它被註冊時,將在HTML中呈現腳本標籤。然後,根據瀏覽器的緩存設置,客戶端瀏覽器不會再次下載文件。 – Radu094 2010-04-22 14:50:02

相關問題