给CI配台兰博基尼,扩展全静态HTML,支持多皮肤+自动更新!
本帖最后由 visvoy 于 2009-3-23 19:48 编辑不需要修改CI核心文件,不需要修改你的controller代码,实现全站静态html
支持即时切换皮肤,图像文件负载平衡(就是把图片都迁移到另外一个服务器),
而且通过设置 ->output->cache() 就能自动更新过期的html文件
准备工作:
1. CI系统一份,版本170或者171不限,更低版本我没测试哦
2. Apache一个,注意CI的网站在Apache httpd.conf 里面的配置要改一下,
把 AllowOverride None 改成 AllowOverride All ,不会改的童鞋。。。囧rz
3. 解压缩软件一条,不然没法解压附件~
4. 下载三个附件,解压的 .htaccess.zip 是url rewrite的配置,放到CI网站根目录
5. 解压的config.php(后面一堆汉字。。。)是CI配置文件增加的部分,
请添加到 application/config.php 文件里面
6. 解压application.zip,获得目录application,覆盖你CI的application文件夹
7. 没有了~
里面有一个测试controller,可以执行 http://你的站点/welcome.html 查看效果,嘿嘿
注意事项:
1. 你至少需要设置一个皮肤主题名称,并且网站根目录要有对应的主题目录,
比如设置default_theme=abc,那么网站根目录要有 abc 这个目录
2. 把你所有的图片,css,js脚本,统统放到 /abc/img/ 目录里面
因为生成html时候,后台会自动把 /abc/img/ 的链接替换成绝对路径
3. 你的views文件需要根据contrller名字,分目录保存,例如:
controller=hello,views目录应当是:application/views/abc/hello/
如果method=kitty,那么对应views文件应当是:...views/abc/hello/kitty.php
4. views中的链接地址写法改为:<a href='/abc/hello/kitty.html'>xx</a>
5. 缓存用法不变,还是 ->output->cache(10) ,对应的 html 文件会被缓存10分钟
enjoy~ 现在论坛有点冷清;P
一些补充,如何增减皮肤
本帖最后由 visvoy 于 2009-3-23 19:41 编辑配置文件有中文说明,耐心滴看吧^o^
如果没有给controller设置缓存时间,那么其对应生成的html文件将保存1个月,
1个月之后html会再次刷新html
网站生成静态html的格式:
http://CI站点/皮肤名称/controller名字/method名字/其他segment.html
比如:http://CI站点/myskin/register/index/yes.html (yes是同意注册条款。。。)
像news这种带分页的没问题,照样全静态:
http://CI站点/skin_blue/news/read/1.html
这个扩展修正了缓存文件攻击漏洞,可以放心的开缓存
增减皮肤很简单
比如要增加一套新皮肤,名字是 dark ,按照下面1./2.即可
1. 将 html 文件放到 application/views/dark/ 目录下面
2. 把 图像/css/js/flash 文件放到 网站目录/dark/img/ 目录下面
注意 dark 皮肤里的 html 文件中的所有链接要写成 /dark/controller/action.html 的形式,然后静态化就可以将这些链接转成网站的绝对地址 最爱 兰博基尼 使用有么有问题的,大家说一下哇:dizzy:
代码区好冷清的说:'( 呵呵。。还没用到,辛苦了! 呵呵,有时间用用看 敢问楼主,皮肤往往与HTML相关,也就是VIEW中的HTML,不同的皮肤应该也会有不同的VIEW结构
如果增加一套皮肤,VIEW的目录是如何存放的? 增减皮肤很简单,比如要增加一套新皮肤,名字是 dark
将 html 文件放到 application/views/dark/ 目录下面
把 图像/css/js/flash 文件放到 网站目录/dark/img/ 目录下面
就可以了
注意 dark 皮肤里的 html 文件中的所有链接要写成 /dark/controller/action.html 的形式,然后静态化就可以将这些链接转成网站的绝对地址 如果要静态化,那V层不如用Smarty方便点 本帖最后由 visvoy 于 2009-3-26 01:12 编辑
这个不需要修改Controller和View,仅仅把文件放进你的CI网站就能全静态,
CI挂上Smarty就没有速度优势了,class+compiler=150kb,加载很费资源
Smarty若要实现定期更新静态html呢?也是要扩展,似乎没有直接用这个方便