2013-03-07 72 views
0

的谷歌應用程序引擎的AppEngine-web.xml配置文件允許你指定哪些文件是靜態內容和文件資源。當您上傳您的應用程序谷歌只有指定的靜態內容將被放置於靜態內容服務器和唯一指定的資源文件將被推到應用服務器(從https://developers.google.com/appengine/docs/java/config/appconfig意譯)。Google App Engine配置中的靜態和資源文件集是否相互作用?

我有一個看起來像一些配置語句...

<static-files> 
    <include path="/**.html" /> 
    <include path="/**.js" /> 
    <include path="/**.css" /> 
    <include path="/**.ico" /> 
    <include path="/**.png" /> 
    <include path="/**.jpg" /> 
    <include path="/**.gif" /> 
    </static-files> 

    <resource-files> 
    <include path="/**.ftl" /> 
    </resource-files> 

我的問題是...

當我將文件添加到靜態文件列表,這是否意味着他們不會也作爲資源文件發貨?

當我將文件添加到資源的文件列表,這是否意味着他們將不會付運靜態文件呢?

或者我需要提供一個完整的排除路徑中每個部分設置?

該文檔是模糊的位置(至少我看不出有什麼明確的)。由於這只是一個節省空間的優化(有些上傳時間,我猜)它可能對我來說並不重要。但我似乎沒有任何方法可以說明推送到Google時內容是否已達到靜態或資源區域。

謝謝!

回答

4

的幾點:

  1. 的靜態文件的一點是,他們被直接提供給最終用戶。他們不是由GAE服務器提供服務,而是由專門的(內部)Google CDN服務器提供服務。這改善了加載時間。對於靜態文件,您還可以聲明「緩存控制」標頭,甚至可以進一步縮短加載時間(因爲客戶端緩存和下游緩存會緩存它)。

  2. 資源文件是爲了通過應用程序代碼,無法直接投放使用。 Afaik,它們仍然作爲文件,但它們由GAE服務器提供服務,因爲它們需要位於GAE實例上。

  3. 文件中WAR的公共部分都默認爲雙方處理,靜態文件和資源文件。所以你需要明確地排除他們,如果你想他們擔任文件。

  4. 下/ WEB-INF文件永遠不會送達,但can be accessed by code。也可以通過代碼訪問代碼目錄(/ src)中的文件,但不會將其作爲靜態文件(它們將被複制到/ WEB-INF/classes中)。

+0

謝謝回答。除了第3點關於排除的注意事項外,我大部分都知道這些觀點。這是我的問題的主要觀點。所以你說如果我想把某些東西當作靜態文件而不是資源,我需要在資源列表中明確地排除它們(反之亦然)。反之亦然。 – Chuck 2013-03-08 15:48:08

+0

是的,這是文檔說的。第3和第4款:https://developers.google.com/appengine/docs/java/config/appconfig#Static_Files_and_Resource_Files – 2013-03-08 16:02:08

+0

其實,在重讀的文檔,它看起來像通過添加一個include指令,你限制設置爲只包括什麼。添加排除指令只會減少包含的集合。因此,在我的示例中,我不必將ftl模式添加爲靜態文件列表中的排除項。只有包含的模式纔會發送到CDN服務器。謝謝。 – Chuck 2013-03-08 16:28:57