Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows/IIS上的多个CakePHP Webroot之间共享资源?_Cakephp_Iis 6_Windows Server 2003_Cakephp 1.3 - Fatal编程技术网

在Windows/IIS上的多个CakePHP Webroot之间共享资源?

在Windows/IIS上的多个CakePHP Webroot之间共享资源?,cakephp,iis-6,windows-server-2003,cakephp-1.3,Cakephp,Iis 6,Windows Server 2003,Cakephp 1.3,我安装了一个CakePHP,运行六个不同的网站,每个网站都有自己的webroot。所有的基本代码都是相同的(控制器、模型等),只是css、图像、js等被分割成单独的webroot(app/webroot、app/webroot\u second\u site、app/webroot\u third\u site等) 我的问题是:是否有一种方法可以在网络根之间共享公共资源?因此,我们没有六个不同的TinyMCE和jQuery副本使我们的项目杂乱无章,对我来说更重要的是,这样我们就可以在一个公共CS

我安装了一个CakePHP,运行六个不同的网站,每个网站都有自己的webroot。所有的基本代码都是相同的(控制器、模型等),只是css、图像、js等被分割成单独的webroot(app/webroot、app/webroot\u second\u site、app/webroot\u third\u site等)

我的问题是:是否有一种方法可以在网络根之间共享公共资源?因此,我们没有六个不同的TinyMCE和jQuery副本使我们的项目杂乱无章,对我来说更重要的是,这样我们就可以在一个公共CSS文件中进行更改,而不必在六个不同站点的文件夹中复制/粘贴更改


如果这些站点运行在Linux机器上,我认为通过从每个WebRoot到目录树中更高一级的公共文件夹的符号链接可以相当容易地完成,但是我们运行的是Windows Server 2003/IIS 6。有什么建议吗?

您可以创建一个静态服务器。将DNS条目添加到static.yoursite.com之类的内容。从您的其他站点链接到这些文件——您可能只需要修改HTML帮助程序,使其自动创建到其他域的链接

这有助于提高性能,因为您可以运行nginx之类的工具来服务这些静态文件。它还将并行化资源检索——大多数浏览器将允许2个到给定服务器的连接,因此静态内容将与动态内容所需的连接资源竞争。本质上,用户将启动两个到动态内容的连接以及两个到静态资源的连接


很好用。

这会有用的。您将需要重新定义windows服务器的目录,但您将非常了解它

首先,将你的应用程序和蛋糕目录置于公共html之上

/var/www/app
/var/www/cake
确保文件夹蛋糕中包含所有蛋糕文件夹(蛋糕、供应商等) 将您的站点指向它们的公共html目录

/var/www/html/site1
/var/www/html/site2
webroot内容将位于每个公共html目录中。现在,修改每个webroot中的
index.php
文件,以指向同一个应用程序:

if (!defined('ROOT')) {
    define('ROOT', DS.'var'.DS.'www'.DS.'app');
}

if (!defined('APP_DIR')) {
    define('APP_DIR',dirname('app'));
}

if (!defined('CAKE_CORE_INCLUDE_PATH')) {
    define('CAKE_CORE_INCLUDE_PATH', DS.'var'.DS.'www'.DS.'cake');
}
当然,请确保已打开“重写”。然后,它将运行相同的代码,但使用index.php所在的webroot。事实证明,您可以在NTFS文件系统中进行目录符号链接。或者至少离实际用途足够近。“NTFS连接”将满足您的需求。 抓取Sysinternals“Junction”程序,获得一个简单的命令行程序来创建/删除这些连接。 然后,您可以将所需的任何公共目录链接到单个主目录。 例如,如果你有

webroot1/ webroot2/ webroot3/

每个都有自己的“js/”目录,然后您可以创建

webroot_common/js/

然后符号链接。。。呃,“创建连接”到新目录,如下所示:

junction webroot1/js/common webroot_common/js
junction webroot2/js/common webroot_common/js
junction webroot3/js/common webroot_common/js
(是的,“junction”程序从Linux“ln-s”向后获取输入) 然后,您可以将所需的任何公共js文件(如jQuery)放在该公共文件夹中,并将任何特定于站点的js文件保留在“webrootX/js”中