我正在Google AppEngine(Java)上开发一个生成HTML报告的应用程序。报告会经常查看并偶尔进行修改,我想通过安排生成报告并上传到Google云端存储来优化性能,并让报告代替AppEngine。因此,userA和userB可以创建报告并从userA-report.myapp.com和userB-report.myapp.com访问它们,其中内容在AppEngine中生成并存储在云存储中。
但是,我有一些限制: - 有些报告有访问限制,我希望我的应用程序仍然可以控制它;换句话说,我不想使用ACL并保持限制访问; - 我没有办法动态配置我的CNAME条目;所以,我仍然需要在AppEngine上处理请求并重定向到云存储。我在想我能做的是如果我发现报告已经在云端存储上可用,我发送了一个HTTP 3XX重定向到http://storage.googleapis.com - 我发现这不是高效的,因为它涉及另一个旅行,但仍应比再次生成页面更快。我也可以根据需要处理任何身份验证。
除了上面对性能的关注之外,这对于我来说首先转到内容服务器,然后重定向到CDN听起来“向后”;云存储是否有办法在未找到文件的情况下进行配置,它会遇到不同的服务器?或者我的方法完全没有意义?
答案 0 :(得分:2)
首先,对于访问限制问题,首先进入您的服务器并重定向到storage.googleapis.com是一种非常合理的方法。您可能还想考虑使用Signed URLs。使用此功能,不要在对象上设置ACL以进行访问控制,只需将ACL保持为私有,并在您确定用户应具有访问权限时创建受限时签名URL。
关于何时找不到文件的第二个问题,您可以将Website Configuration功能与自定义NotFoundPage一起使用。这可以是HTML文件,因此您可以使用它来重定向到您的应用程序服务器。