2014-04-01 26 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前端缓存中,这样对性能的影响会很小。 –