我们的网站提供了一些图像和 PDF 文档。这些图像和文档存储在源代码管理中,并在部署时复制内容。我们正在考虑创建一个单独的图像服务器来放置我们的库存图像和 PDF 文档——从而显着减少我们部署包的体积。
有没有人有这种方法的经验?
我想知道任何“陷阱”——比如 XSS 问题和/或从备用子域传递内容的浏览器问题?
我们的网站提供了一些图像和 PDF 文档。这些图像和文档存储在源代码管理中,并在部署时复制内容。我们正在考虑创建一个单独的图像服务器来放置我们的库存图像和 PDF 文档——从而显着减少我们部署包的体积。
有没有人有这种方法的经验?
我想知道任何“陷阱”——比如 XSS 问题和/或从备用子域传递内容的浏览器问题?
临:
许多浏览器只会分配两个套接字来从单个主机下载资产。因此,如果 index.html 是从 www.domain.com 下载的,它引用了 6 个图像文件、3 个 javascript 文件和 3 个 CSS 文件(都在 www.domain.com 上),浏览器将一次下载 2 个,并且其他阻塞,直到套接字空闲。
如果您将 6 个图像文件拉到一个单独的主机上,例如 images.domain.com,您将获得额外的两个专用于下载图像的套接字。这使资产下载过程并行化,因此理论上,您的页面可以呈现两倍的速度。
缺点:
如果您使用 SSL,则需要为 images.domain.com 获取额外的单主机 SSL 证书或为 *.domain.com 获取通配符 SSL 证书(匹配任何子域)。否则将在浏览器中生成警告,指出该页面包含混合的安全和不安全内容。
您还将使用不同的域,不会在每个请求中发送 cookie 数据。这可以提高性能。
尚未提及的另一件事是,您可以使用不同的 Web 服务器来提供不同类型的内容。例如,您的静态内容可以通过 lighttpd 或 nginx 提供,同时仍可通过 Apache 提供您的动态内容。
优点:
-负载均衡
- 隔离不同的功能
缺点:
- 更多工作(当您在主站点上创建页面时,您必须在单独的服务器上维护资源)
XSS 之类的问题是代码没有清理输入(或输出)的问题。唯一可能出现的问题是,如果您有用于身份验证的子域特定 cookie.. 但这确实是一个微不足道的修复。
如果您使用 HTTPS 并从 HTTP 域提供图像,那么您会在使用它时弹出浏览器安全警报警告。
因此,如果您使用 HTTPS,如果您不想惹恼您的用户,您将需要为您的图像域购买 HTTPS :)
还有其他方法可以解决这个问题,但这并不是特别在这个答案的范围内 - 这只是一个警告!