我计划在生成的页面中包含许多静态资产(js、css、图像和缩略图)的大型网站。该网站将TYPO3
用作 CMS(这是客户要求)。
我想我可以通过使用两个服务器设置来严重提高性能/页面加载时间。一台运行主应用程序 (PHP) 的服务器和另一台运行静态文件的服务器由精简版的 apache 或类似 lighthttpd 的东西提供服务。
包括来自文件服务器的例如 js 或 css 文件当然没什么大不了的。只需使用绝对网址即可http://static.example.com/js/main.js
。
但是:那个网站会有很多页面,上面有很多产品图片的缩略图。因此,当主应用程序尝试创建某些图像的缩略图时,我看到了两个问题:
像这样的原始图像
products/some.jpg
上传到静态文件服务器上,因此与尝试创建缩略图的 PHP 应用程序不在同一服务器上。TYPO3 将创建的缩略图写入预期位于同一服务器上的临时目录。因此,数百个缩略图将从与主应用程序位于同一服务器上的临时目录中写入和提供 -> 在这种情况下,静态文件服务器基本上是无用的,所有缩略图都将从主应用程序的服务器请求。
所以,我的问题是:如何克服这个缺点?
是否可以将某些目录“符号链接”到另一台服务器?
因此,例如,如果 PHP 尝试打开原始产品图像以创建缩略图,imagecreate("products/some.jpg")
而产品文件夹实际上“指向”静态图像服务器上的产品文件夹?我知道可以做这样的事情,.htaccess
但它可以在文件系统级别上吗?
Varnish Cache非常适合这个!
(来源:mocsystems.com)
你可能会觉得这篇文章很有趣。
我想说的第一件事就是从
mod_expires
减少静态文件请求开始,然后可能会增加mod_deflate
较低的带宽。只有当您真正看到严重的负载时,才开始分区到单独的服务器。
将静态请求移动到同一 apache 上的不同虚拟服务器(可能使用相同的文档根目录)应该是分区的良好第一步。
似乎没有人真正回答实际问题。
让不同的服务器处理对静态文件的请求与由同一个缓存代理处理所有请求有很大不同。
拥有一个单独的静态文件服务器允许客户端并行处理更多下载。
我也对在 TYPO3 中轻松执行此操作的解决方案感兴趣。不过,我不需要在单独的机器上使用静态服务器。所以文件系统访问对我来说不是问题。