2014-04-01 50 views
0

我正在使用自定義域X.com在Google AppEngine(Java)上運行的應用程序上工作。爲應用程序的每個用戶分配一個自定義URL,格式爲userName.Y.com。目前,X.com和* .Y.com都分配給AppEngine應用程序,並且我有一個servlet篩選器,用於確定訪問userName.Y.com時要返回的數據。Google AppEngine,多個自定義域和靜態文件

但是,問題是使用靜態文件時。如果我有一個靜態文件X.com/index.html,當我訪問userName.Y.com/index.html時,我可以訪問同一個文件,並且我的過濾器根本沒有被調用。我懷疑這是因爲index.html是一個靜態文件,它在JVM之外提供,並且不會調用該過濾器。

這裏是我考慮的事情:

  1. 我可以讓一切都在X.com動態(而不是靜態文件) - 然後過濾將踢,預期這樣就可以了。但是,這對於性能並不理想。
  2. 我可以部署2個不同的應用程序,一個用於X.com中的文件,另一個用於獲取Y.com的數據 - 這對於維護非常重要,因爲我必須確保所有內容都處於同步狀態,而且我需要公開Y.com中的過濾器的API以訪問存儲在X.com中的數據。
  3. 同樣,我可以將我的靜態文件複製到CDN,並使所有動態 - 然後做一個304服務靜態文件從CDN。這也有性能影響。

看來沒有一個我認爲是理想的解決方案(就性能和維護而言) - 有沒有更好的方法?理想情況下,我需要一個不涉及多個部署(不管是多個應用程序還是多個版本)的解決方案,但不會有很大的性能損失。

+0

爲什麼不使用cloudstorage來爲您的文件提供服務。谷歌會做的服務。但是(來自文檔):您只能使用HTTP的CNAME重定向,而不能使用HTTPS。 – voscausa

+0

是的,不幸的是,我需要HTTPS - 另外,它類似於選項2,我必須管理2個部署 - 但它聽起來比選項2更好! –

+0

它類似於CDN。除了html文件外,我用它來處理各種文件,並使用CDN(Google存儲)域名。我爲我的域的文件使用不同的雲存儲文件夾。 – voscausa

回答

0

解決方案1是迄今爲止最簡單的,您可以完全控制要提供的服務。在性能方面,我也不擔心。如果您向服務器響應發送正確的緩存控制標頭,那麼GAE Frontend將在不碰到您的實例的情況下爲您的文件提供服務。

+0

是的,我想解決方案1可能是我的' d去。希望頁面可以緩存在GAE前端緩存中,這樣對性能的影響會很小。 –