http - 在 HTTPS Azure Web 角色上托管 WebAPI,并在 HTTPS Azure CDN 上托管 HTML Javascript?

标签 http azure ssl https azure-cdn

我有一个 AngularJS WebAPI 应用程序,它有一个 Javascript 前端。前端调用后端WebAPI获取数据。将来很可能会有不止一个前端调用后端。

我想更改此应用程序以使用 HTTPs,并正在研究如何最好地构建它。我认为有两种方式(也许更多)。

(1) 在一个(或多个)Web 角色上托管 WebAPI C# 应用程序、index.html、Javascript、Javascript 库和其他 HTML。

(2) 在 CDN 上托管 index.html、Javascript、Javascript 库和其他 HTML,并将 WebAPI C# 应用程序放在一个位置的一个(或多个)Web 角色上。

从性能角度来看,当我使用 SSL 时,拆分解决方案 (2) 可能会出现任何问题。我应该考虑什么可能有助于缩短启动时间(我的目标是尽可能快)。

我还有一个问题。如果我要使用 Azure CDN,那么我是否仍然能够将我的网站索引寻址为 www.mywebsite.com,如果使用 HTTPS,我是否需要 SSL 证书?

最佳答案

选项 2 更可取。

您必须认为您的应用程序位于后端。前端只是一组建议的 UI 控件和交互,用于使用您拥有的应用程序。然后,如果您可以单独托管它们,您将获得一些好处,首先是不创建 UI 依赖项。

该方法就像创建一个 thin client .

由于该应用程序是基于 AngularJS 的,因此可能所有 UI 都是包含 HTML、CSS 和 Javascript 的静态文件。您可以host them in BLOB storage ,并通过 CDN 对其进行扩展。您可以拥有custom domain name指向 Azure Blob 存储,例如“www.yourdomain.com”。它有很多好处,包括比 Web 角色更好的价格和可扩展性。抛开这一点,无论你是否受到点击,你都需要为网络角色付费。唯一的缺点是,据我所知,无法使用 HTTPS,但这应该不是问题,因为您只是托管包含占位符的静态内容和模板,没有实际数据。

在 Blob 存储上,您可以 attach your own cache control headers ,允许浏览器在本地缓存这些文件。然后,用户将下载这些文件一次,并在下次从浏览器缓存中恢复。另外,您可以将已经压缩的内容存储在GZIP中,然后set the content encoding property to let the browser know it is compressed ,从而实现更快的内容下载。不要忘记你应该捆绑你的资源。例如,您应该将所有 JS 代码捆绑在一个 JS 文件中,将所有 CSS 代码捆绑在一个 CSS 文件中,并将所有 AngularJS View 捆绑在 template.js 文件中(也捆绑在独特的 JS 文件)。

不过,您需要在工作人员/Web 角色实例中托管后端应用程序。这里你可以使用HTTPS,并且通过HTTPS使用AJAX也没有问题,尽管只要SSL/TLS证书是由浏览器认可的CA签署的(即:有效证书),在HTTP上加载的页面就可以了。如果使用自签名证书,浏览器将无法提示用户接受它。如果您打算从自签名开始,请记住这一点。

因此,您将在 blob 存储中拥有不依赖于用户/状态的所有内容,即廉价、快速且高度可扩展;所有用户数据交互都将通过工作人员/网络角色通过可能采用 JSON 格式的紧凑数据请求/响应进行。因此,您需要更少的 Web/ worker 角色来提供相同级别的服务。

现在,如果您有非常不对称的大量查询和数据更改请求,您应该考虑类似 CQRS 的方法。 .

关于http - 在 HTTPS Azure Web 角色上托管 WebAPI,并在 HTTPS Azure CDN 上托管 HTML Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27189298/

相关文章:

Azure 连接字符串不会覆盖 appsettings.json

python - 使用自签名证书将 Metro 应用程序连接到 Python SSL 服务器

javascript - 在哪里放置前端javascript配置变量

azure - 如何根据 kusto 查询(KQL)语言中的命名键从 Json 中获取值

网页的 C# 控制台输出到 JSON

laravel - Laravel 中的 HTTP 请求

json - Symfony2 - 检查接受 HTTP header 是否支持 "application/json"

Azure VM - 由于虚拟机出现故障,无法执行操作

python 扭曲 : How to stop TLS?

http - 如何知道内容长度