2013-07-17 1 views
2

Я разрабатываю приложение на Google AppEngine (Java), которое создает HTML-отчет. Отчет часто просматривается и изменяется иногда, и я думаю, чтобы оптимизировать производительность, планируя создание отчета и его загрузку в облачное хранилище Google, и они служат для отчета вместо AppEngine. Таким образом, userA и userB могут создавать отчеты и получать доступ к ним из userA-report.myapp.com и userB-report.myapp.com, где контент создается в AppEngine и хранится в облачном хранилище.Использование HTTP 3XX для перенаправления на объекты Google Cloud Storage?

У меня, однако, есть несколько ограничений: - В некоторых отчетах есть ограничения доступа, которые я хотел бы контролировать по своему приложению; другими словами, я не хочу использовать ACL и поддерживать это для ограничения доступа; - У меня нет возможности динамически настраивать записи CNAME; поэтому мне все равно нужно обработать запрос на AppEngine и перенаправить на Cloud Storage.

Я думаю, что я могу сделать, если я обнаруживаю, что отчет уже доступен в облачном хранилище, я отправляю перенаправление HTTP 3XX на http://storage.googleapis.com. Я понимаю, что это не так результативно, поскольку оно связано с другой поездкой, но должен все же быть быстрее, чем генерировать страницу снова. Я также могу обрабатывать любую аутентификацию по мере необходимости.

Помимо беспокойства, которое у меня было выше для производительности, это звучит «назад» ко мне, чтобы сначала перейти на сервер контента, а затем перенаправить на CDN; Есть ли способ в Cloud Storage для настройки в случаях, когда файл не найден, он попадает на другой сервер? Или мой подход совершенно бессмысленен?

ответ

2

Во-первых, для вопроса ограничения доступа, поступающего на ваш сервер и перенаправления на storage.googleapis.com, является вполне разумным подходом. Вы также можете рассмотреть возможность использования Signed URLs. С помощью этой функции вместо того, чтобы устанавливать ACL для объектов для контроля доступа, просто держите ACL как конфиденциальный и создавайте подписанные URL с ограниченным сроком, когда вы решите, что пользователь должен иметь доступ.

Для вашего второго вопроса о том, когда файлы не найдены, вы можете использовать функцию Website Configuration с пользовательской NotFoundPage. Это может быть HTML-файл, поэтому вы можете использовать его для перенаправления на ваш сервер приложений.

+0

Спасибо, это то, что я ищу! –