如何跨多个域重用代码?

2024-04-20

我只是使用 Yii 框架构建了一个 CMS 框架。我想将 CMS 部署到多个域。

/home/root/www/domain1.com
/home/root/www/domain2.com
/home/root/www/domain3.com
/home/root/www/domain4.com

我想重用 css 文件和受保护文件夹下的所有文件,这样一旦我更新 css 和受保护文件夹中的文件,所有域都应该反映更改。


是的,Yii 支持这一点。事实上,这就是我对一些网站的配置方式。

(当然,这是基于将所有站点都放在同一服务器上。但我看到埃文有这个。这不适用于跨服务器。)

Firstly,这需要您将代码从 Web 根目录移到文档根目录中。看here http://www.yiiframework.com/wiki/116/moving-project-code-outside-of-webroot-plus-multiple-project-support/.

Secondly,它要求您使用 Yii AssetsBase。看here http://www.yiiframework.com/wiki/148/understanding-assets/ and there http://www.yiiframework.com/wiki/311/assetmanager-clearing-browser-s-cache-on-site-update/。我发现资产管理配置起来很困难(但使用起来很轻松)。这就是我最终得到的结果:

在 Components/Controller.php 中包含以下内容:

    /**
     * @var registers which js, css, images have been published
     * See: http://www.yiiframework.com/wiki/311/assetmanager-clearing-browser-s-cache-on-site-          update/
 */

    private $_assetsBase;

    public function getAssetsBase()
    {
            if ($this->_assetsBase === null) {
                Yii::app()->assetManager->newDirMode = 0755;        
                Yii::app()->assetManager->newFileMode = 0644;        

                    $this->_assetsBase = Yii::app()->assetManager->publish(
                            Yii::getPathOfAlias('application.assets'),
                            false,
                            -1,
                            defined('YII_DEBUG') && YII_DEBUG
                    );
            }
            return $this->_assetsBase;
    }

上面假设你的JS、CSS和图片的位置如下:

protected/assets/js/mobiscroll-2.3.custom.min.js
protected/assets/css/mobiscroll-2.3.custom.min.css
protected/assets/img/einstein.png

然后在您的视图中,按如下方式调用您的资产:

<?php
$cs->registerScriptFile($this->assetsBase.'/js/mobiscroll-2.3.1/js/mobiscroll-2.3.custom.min.js');
$cs->registerCssFile($this->assetsBase.'/js/mobiscroll-2.3.1/css/mobiscroll-2.3.custom.min.css');
?>

<img src="<?php echo $this->assetsBase ?>/img/einstein.png">

最后,在对 JS 或 CSS 进行更改后,您将希望在所有用户的浏览器中强制刷新缓存。您可以通过触摸(原始)资产目录来完成此操作。这将迫使 Yii 重新哈希(已发布的)资产目录。随后,您的 JS 和 CSS 将在所有用户的浏览器中刷新。做这样的事情:

$command = 'touch /path/to/your/website/protected/assets';
exec ( $command.' 2>&1',  $output , $result  );
if ($result === 0) {
    $message = 'Assets have been pointed; a new directory should now be hashed';
} else {
    $message = 'Looks like something went wrong. Assets not pointed?';
} // END if
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何跨多个域重用代码? 的相关文章

随机推荐

  • jinja 模板变量赋值范围

    鉴于以下 Jinja 片段 set sep for stamp in stamp list for heartbeat in heartbeat list if heartbeat name site name and heartbeat
  • Jbuilder Rails 缓存速度较慢

    我尝试将缓存与集合一起使用 使用多种解决方案 问题是每当我尝试缓存时 响应都会变慢 考虑以下集合示例 该集合为其中的每个项目 大约 25 个项目 呈现 2 个部分 json data do json array organizations
  • 被 chrome 扩展内的 jquery 调用难住了

    在我的 chrome 扩展中 我称之为 jsonPost email email protected cdn cgi l email protection password demo content selected text val no
  • 哪种语言(在 JVM 上运行)最适合创建 DSL?

    我们需要创建复杂的固定长度和可变长度字符串 这些字符串可能代表客户资料 订单等 你们建议使用哪种基于 JVM 的编程语言 想法是让最终用户使用此 DSL 创建字符串 所以我正在寻找验证 代码完成等 Groovy http docs code
  • 是服务中的 AtomicLong 字段,是实现服务器端标识符以通过存储库持久保存实体的好方法

    我正在开发一个 SpringBoot 应用程序 我的严格要求是生成服务器端 a 数字 ID对于一个实体 然后通过存储库将其持久化 由于每个 Service 都是无状态的 因此都是单例 因此使用 AtomicLong 是实现它的好方法吗 这是
  • 如何在 dxdatagrid 中动态创建具有 dataType 的 dxi 列?

    我们正在开发一个角度应用程序 我必须在 dxdatagrid 中显示记录 每次模式都会不同 数据来自不同的表 想要添加 编辑记录 想要显示与每种数据类型对应的控件 请任何人帮助实现同样的目标 您可以使用该属性 columns 在你的dx d
  • 如何(以及为什么)使用显示:表格单元格 (CSS)

    我有一个网站very活动背景 我说的是 6 个左右不同的 z 索引 这里 2 个带有动画 我想要一个有内容的前景 但想要一个通向背景的 窗口 我遇到的一些问题 你不能在背景上 打洞 所以 我构建了一个包含 div 我们称之为 srminfo
  • 下载变压器模型以供离线使用

    我有一个训练有素的 Transformer NER 模型 我想在未连接到互联网的机器上使用它 加载此类模型时 当前会将缓存文件下载到 cache 文件夹 要离线加载并运行模型 需要将 cache 文件夹中的文件复制到离线机器上 然而 这些文
  • 临时显示其他选项卡时 UIRefreshControl 冻结(iOS 7)

    我的一个选项卡上有以下内容 void viewDidLoad super viewDidLoad self clearsSelectionOnViewWillAppear YES UIRefreshControl refreshContro
  • 我可以在外部 DLL 中使用 ASP.NET Session[] 变量吗

    我有两个项目 一个是 DLL 项目 其中包含我所有的逻辑和数据访问内容 另一个是 ASP NET 项目 它负责我的表单等 我有一点困惑 我想如果我将 System Web 命名空间引用添加到 DLL 项目中 我将能够引用 ASP NET 页
  • ios swift - 关闭导航控制器的根视图控制器

    我通过单击主视图控制器的按钮打开导航控制器 我以编程方式在导航控制器上创建一个左栏按钮项目 我想关闭导航控制器并返回到我的主控制器 我本质上是回到导航控制器的根视图控制器 我试过了 navigationController dismissV
  • 无效的源反射宏:has_many:through

    我有这样愤怒的联想 融资 gt 事件 gt 子项目 gt 项目 我想通过所有程序访问last financings 所以代码是 class Fcp lt Program has many fcp subprograms foreign ke
  • 对齐 Google 地图标记片段中的文本

    我希望片段中的字符串与中心对齐 另外 代码片段中的换行符 n 被转换为空格 有没有办法插入换行符 我的相关代码 GoogleMap map map addMarker new MarkerOptions position pos title
  • MediaPlayer 的状态更改侦听器

    这张图中有很多states http developer android com reference android media MediaPlayer html StateDiagram 但使用标准监听器我只能监听一些基本状态 那么是否可
  • Excel 不应用 HTML 中的 mso-number-format

    这是我的情况 我有简单的 Excel OOXML 文件 http www filedropper com excel 1通过 Web 查询连接到我的服务器 所有带有日期的单元格都具有 常规 水平对齐方式 无对齐方式 和 MM DD YYYY
  • 如何在 json 文件中插入现有的 php 字符串文字?

    我有一个 php 脚本 它通过使用访问 json 文件file get contents 在 json 文件中 我们声明了一个 php 变量 请让我知道是否有任何方法可以解析 json 文件中的 php 变量 下面是代码 测试 json r
  • 在django中批量创建模型对象

    我有很多对象要保存在数据库中 所以我想用它来创建模型实例 使用 django 我可以创建所有模型实例 MyModel data 然后我想把它们全部保存下来 目前 我有类似的东西 for item in items object MyMode
  • 如何获取 ActionMailer 的 after_action 过滤器中的操作名称

    在下面的课程中 如何获取当前操作名称 即email confirmation password reset 在 的里面after action打回来add mandril headers class UserMailer lt Action
  • 是否有同时支持 RSS 和 ATOM 的 PHP 提要阅读器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何跨多个域重用代码?

    我只是使用 Yii 框架构建了一个 CMS 框架 我想将 CMS 部署到多个域 home root www domain1 com home root www domain2 com home root www domain3 com ho