2015-11-02 64 views
0

呈現angularjs應用程序時,部分是從Web服務器還是從瀏覽器加載?當我嘗試使用螢火蟲進行調試時,我可以看到正在向web服務器發送html部分文件的請求。我的假設是,部分文件總是從Web服務器請求。我的理解是正確的嗎?angularjs是否呈現來自瀏覽器或Web服務器的部分

此外,有沒有在那裏瀏覽器下載到瀏覽器的所有應用程序的HTML數據,然後加載從瀏覽器中的諧音未做任何網絡調用的方法嗎?這是可能的,是否有任何選項可以在AngularJs中完成這個任務?請告訴我。如果沒有出現HTTP請求時 -

+0

你是什麼意思與'從browser'?緩存? – ylerjen

+0

yes來自瀏覽器緩存。 – zilcuanu

回答

1

當如果這個模板是在$ templateCache您請求頁面「水木清華/ smth2.html」的角度首先檢查。如果它將從服務器或瀏覽器緩存加載取決於頁眉 - 默認情況下,它將從緩存中加載,如果出現。請求模板添加到templateChache後。

所以要下載的所有模板一次正確的做法是把他們$ templateCache。

您可以直接做到這一點(所以你不會有* .html文件),或者你可以使用工具來構建項目即咕嚕。 (工具可將* .html文件轉換爲* .js文件)

例子 - 我們目前在我們的項目:

  1. 開發結構:
index.html 
app.js 
page.html 

在app.js,你必須app.state('page', templateUrl: 'page.html')

  • 爲index.html的
  • Http請求用於app.js
  • HTTP請求時,用戶轉到#page HTTP進行page.html中請求。將page.html的內容添加到templateCache。
  • 當用戶再次進入#page內容從templateCache
  • 採取如果用戶按F5:templateCache被清除,index.html的將被從服務器重新加載,app.js會從服務器重新加載,page.html中會根據頁眉和瀏覽器從服務器或瀏覽器緩存重新加載。

  • 生產結構:
index.html 
app.js 

其中你有app.state('page', templateUrl: 'page.html') app.js和app.module(...).run(function($templateCache.put("'page.html'", "<div>...</div>")))

  • Http請求爲index.html
  • 爲app.js
  • HTTP請求時,用戶進入#page - 對page.html中沒有請求。

當然,你不希望將所有的html模板存儲在一個文件中 - 所以要從1到2進行使用grunt。

注:爲index.html,然後app.js請求可以通過瀏覽器緩存,加上正確的標頭的index.html和數量app.js排除這一點。所以,最後,當你檢查瀏覽器中的網站源文件要看到:

  • 的index.html
  • 應用#uniquecode#的.js
  • angular.js
+0

默認是templateCache使用或者我們需要使用它明確 – zilcuanu

+0

templateCache是​​存儲HTML模板角的地方 - 你可以認爲它只是一個平常地圖

+0

確實angularjs存儲由默認或者我們在templatecache模板需要明確存儲嗎? – zilcuanu

0

當您在angularjs應用程序請求一個頁面,第一時間角度提出請求和Web服務器發送網頁(HTML,JS和圖像),以瀏覽器的響應碼200 第二次,如果沒有服務器回答響應代碼爲304,不從緩存發送頁面和瀏覽器加載頁面,因此,只需要一個請求到服務器就可以加載每個部分視圖。 您可以在瀏覽器開發人員工具的網絡選項卡中進行檢查。 在生產環境中,除此之外,grunt能夠最小化html,javascript和css,減少加載時間。

相關問題