我有一个在共享的IIS7主机上运行的ASP.Net MVC网站,允许用户创建自己的登录页面。该网站允许用户编辑内容,样式(通过UI编辑CSS)以及上传图像。
我正在考虑迁移到Windows Azure以提高可伸缩性并改进数据库备份(使用SQL Azure Data Sync请参阅http://social.technet.microsoft.com/wiki/contents/articles/sql-azure-backup-and-restore-strategy.aspx,我在我的主机提供的SQL备份计划中受到限制)
一个绊脚石,因为客户端可以上传图像和编辑css文件,这些文件需要存储在blob存储或数据库中(任何其他选项?)。我不想使用数据库,因为数据库存储更昂贵。
但是,如果这些文件存储在blob存储中,那么如果从blob存储中获取文件(css,images)而不是从与网站相同的磁盘读取文件(css,images),这将如何影响网站的性能?我知道浏览器缓存会减少对这些文件的请求,但是第一次请求呢?
答案 0 :(得分:3)
对css和图像使用blob存储实际上会提高网站的性能。正如astaykov所说,blob拥有自己的URL,与您的部署URL分开。这意味着您通过Web角色的IIS服务器减少了流量,从而减少了该服务器实例的总体负载。
此外,浏览器通常配置为与给定域的两个并发连接。通过将图像和css放在单独的域中,您的浏览器现在将拥有更多的并发连接。
关于图像或css文件的编辑,Web应用程序代码确实需要将新内容推送到blob,这可能会增加一些延迟。但是,此延迟可能会或可能不会显着(取决于您在Web应用程序上的负载)。与提供内容相比,我认为这应该是一种不常见的操作。
答案 1 :(得分:1)
这些文件需要存储在blob存储或数据库中 (任何其他选项?)。
NO。没有其他选择。
但是,如果这些文件存储在blob存储中,那将是怎样的 给出文件(css,图像)影响网站的性能 从blob存储中获取而不是从相同的内容中读取 磁盘作为网站?
用户保存编辑时,唯一的表现是“降级”。而不是在提取文件时。但是你必须比常规方法更敏捷。您不必将CSS和图像的URL指向文件系统(即/styles/site.css),而是必须将它们直接指向blob(即http://account.blob.core.windows.net/styles/site.css)。
甚至更好 - 正如olivehour建议的那样 - 您可以为blob存储帐户启用CDN,并将CSS / Image网址格式化为指向CDN版本。因此,在blob中使用CSS和图像的唯一性能影响将是更好和更好的性能。
注意,您可以将自己的域与blob存储和CDN关联,因此不会有任何奇特的URL,如“blob.core.windows.net”。
答案 2 :(得分:0)
除了blob存储,还有Windows Azure Content Delivery Network (CDN)。由于您有基于浏览器的应用程序,因此这可能比blob存储更快。
答案 3 :(得分:0)
您现在可以使用Windows Azure网站,如果您不想,您不必担心迁移到SQL Azure数据库 - 它基本上与您的任何内容完全相同目前通过IIS7托管。你可以通过webmatrix管理它,你的MVC站点仍然可以写入"文件系统" (为您的客户端上传了css文件)