为了尝试缩短加载时间,我正在考虑为 Drupal 站点中的文件夹创建一个特定的子域。进一步的改进可能是将该特定子域放在云端……
我并不是很了解服务器,而且我还有很多关于 HTTP 请求的知识需要学习,但基本假设是,如果资源在服务器之间分配,页面加载速度会更快。
例如,如果我的主页显示 image.jpg,则以下内容加载速度应该更快
http://example.com
http://files.example.com/image.jpg
比这个
http://example.com
http://example.com/image.jpg
由于我使用 Drupal 进行开发,我知道我可以在站点配置中更改文件路径。我还没有尝试在文件系统路径字段中输入绝对 URL,但我发现这种解决方案不够灵活,因为这意味着在我的本地开发站点上具有相同的路径。
我能想到的唯一解决方案是在我的服务器上创建一个符号链接,在这种情况下,我想知道它是否真的能实现预期的结果,即上面的例子。
我不确定是否足够清楚,所以如果您需要进一步说明,请随时发表评论。
答案1
您所追求的优势是让浏览器增加并发连接数。要实现这一点,必须从不同的(子)域提供内容。换句话说,必须更改网页上指向静态文件的 URI。
浏览器并不关心文件在服务器上的位置,只关心它们引用的(子)域。通常,这需要使用 Drupal 模块在生成页面时重写链接。(即,网页上的实际链接需要更改 - 而不是幕后操作 - 符号链接、重定向和反向代理在这里无济于事。)您可能需要查看CDN 模块作为类似实现的示例。
一旦您的网页上有正确的 URL,您就需要从这些(子)域提供内容。由于您特别提到使用子域,典型的过程将包括为您的域添加指向子域的 (CNAME) DNS 条目;在您的 Web 服务器(例如 Apache、Nginx、Lighttpd 等)上设置 VirtualHost,服务器名称与您的子域匹配;并将文档根目录指向您的静态文件。这是更改文件路径可能相关的地方 - 让 Drupal 将文件上传到您的子域的文档根目录(假设文件所有权和权限与您的主站点相同) - 或者您可以使用符号链接的想法 - 但您的 Web 服务器需要设置为遵循符号链接。
值得一提的是,从子域提供内容需要“成本”。它需要额外的 DNS 查找。有时,这种成本超过了并发性带来的收益,特别是如果您只提供一些静态文件。通过最小化渲染所有内容所需的请求数量 - 并限制阻塞脚本,可以获得最佳的“感知”性能。除了其他因素之外,从与您的主站点相同的(子)域提供这些初始资源 - 并从您的“静态”子域提供其他内容(例如图像)。