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