【问题标题】:Compressing Javascript & CSS using Gzip使用 Gzip 压缩 Javascript 和 CSS
【发布时间】:2013-05-10 22:25:44
【问题描述】:

好的,这个问题可能听起来很熟悉 - 我到处都读过关于它的答案,但是(在你指出其他答案之前)没有一个对我有用(htaccess修改、gzip-ping 等).

那么,让我解释一下情况:

  • 我的网站是基于 CodeIgniter 的
  • 我在 Mac 上使用 XAMPP(用于开发目的),所以我的实际测试地址类似于 http://localhost/~drkameleon/mysitename
  • 我编辑过的唯一 .htaccess 文件(并且仅用于面向 CI 的重写)与我的 CI 安装位于同一目录中

那么,如何启用 JS/CSS gzip 压缩? (即使脚本是预压缩的,我也不在乎,反正它们是 100% 静态的......)

【问题讨论】:

    标签: javascript css codeigniter .htaccess gzip


    【解决方案1】:

    我通过一个控制器来实现这个,该控制器在两个不同的函数中加载 css 和 javascript 文件,然后运行这个:

    if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))
        ob_start("ob_gzhandler");
    else ob_start();
    
    // headers
    
    // output
    
    ob_end_flush();
    

    似乎对我有用。

    【讨论】:

    • 我创建了一个控制器来加载所有文件,并将它们与这段代码一起输出。
    • 嗯...我还是不明白 - 我不是 HTTP 标头等方面的专家。你能给我更完整的例子吗?我正在使用几个“外部”.js 脚本,我正在以通常的方式 (<script></script>) 在视图中导入。应该在哪里调用控制器?它只是echo .js 文件的内容吗? (在ob_start 我的意思是......)
    • 好的,我终于让它工作了——虽然我绝对不确定我是怎么做到的(哈哈)——我以为我以前试过那个(也许是缓存没有的问题在重新测试之前清除? - 不知道......)Pff......非常感谢,无论如何,伙计! ;-)
    • 就个人而言,我只有一组文件路径,循环使用readfile(),并且只包含一个“js”文件,它是输出所有内容的 php 控制器。