我的webserver文件系统等同于以下内容:
/master-domain.tld
/master-domain.tld/assets/js/foo.js
/master-domain.tld/assets/css/bar.css
/sub1.master-domain.tld
/sub1.master-domain.tld/assets/js/foo.js
/sub2.master-domain.tld
/sub1.master-domain.tld/assets/css/bar.css
...
我想知道的是如何将我的常见静态资产(托管在主域上)提供给我的子域 – 原因是我只需要维护一组’主’资产,而不是更新/复制每次编辑它们时,所有其他子域的文件.显然这可以使用绝对URL来实现,但我的目的是避免这些,以便我的本地/开发系统在我设计/调试时不需要进行任何远程调用.
目前,我为每个子域设置了一个mod_rewrite符号链接php脚本组合,将对不存在的本地资产的任何调用链接到主资产.例如调用“/sub1.master-domain.tld/assets/css/bar.css”将检索主域上托管的bar.css文件,因为本地版本的bar.css不存在.此外,调用“/sub1.master-domain.tld/assets/js/foo.js”将为本地版本的foo.js提供服务,因为它确实存在.
但是我当前的方法似乎阻碍了我的页面加载的性能,我想知道是否有更好的(仍然是模块化的)方法来解决这个问题.
有小费吗?我是以完全错误的方式解决这个问题吗?
解决方法:
如果它们都在同一台服务器上,那么符号链接应该是所有必需的.这应该不会导致性能下降.例如.
/sub1.master-domain.tld/assets -> /master-domain.tld/assets
如果您的子域是从多个服务器提供的,我会设置一个mod_rewrite规则,其中302重定向到主域上的完整URL.在该主域服务器上,我将设置mod_expires,以便缓存资产,从而避免对子域上相同“缺失”资产的大多数后续请求.