静态资源管理
在模板标签的说明中说过,当我们开启debug时,使用assert
框架会启用一个简单的文件服务器。当关闭debug时生成的地址则是相对于{{public}}
标签指向的目录。当我们设置static__path
为站点根目录/public时
{{assert web/js/1.js}}
生成的地址则为http://mysite/public/web/js/1.js
。此时public
目录中并没有这个静态文件,静态文件是存在于应用目录下的 Resource
中,此时我们要使用静态资源管理工具去管理静态资源目录。在cml中有两种方式去使用管理工具。
1. 使用shell/cmd 执行以下命令生成
- v2.7.1+ php index.php make:symlink
- v2.7.0及以下版本 php index.php cml.cmd StaticResource::createSymbolicLink
框架会自动将项目下的所有应用下的Resource
软链接到public
下。
使用命令管理静态文件需要使用exec
方法,需要将php.ini
中disable_functions
的exec
移除。由于开发环境和线上环境的软链接路径多是不一样的,所以上线后记得重新生成(假设开发环境有生成过)。如果静态资源是存放在云存储上只要上传文件,同时修改配置文件的static__path
配置项为相应地址
问题:为什么不直接把静态文件放到站点static下?
手册看到现在相信你对官方建议的开发目录也比较熟悉了(事实上在cmlphp里整个项目目录结构是可以完全自定义的、这边只讨论官方推荐的目录结构)。我们是按应用来区分。在proxxxx
目录下有n个应用。每个应用目录都包含了上线所需的所有配置、控制器、模型、视图、静态文件等,迁移的时候直接把应用目录copy走就好了。下线的时候要只要整个应用目录移除。避免了传统的我们上线/下线一个应用得跑到config/controller/model/static/view下分别发布/删除文件**。基于这种目的所有我们把静态文件放到应用目录下的Resource
中
原文: http://doc.cmlphp.com/devops/static.html