【问题标题】:Minify Javascript using JSMin.php使用 JSMin.php 缩小 Javascript
【发布时间】:2013-03-25 16:05:56
【问题描述】:

我有一个在服务器端使用 JSMin 缩小的网站。问题是我的服务器在实现 JSMin 后变慢了

发生这种情况是因为有一些 url 导入了一些其他特定文件,并且这些文件被添加到缩小的文件中。

现在我想知道我是否应该始终将这些特定脚本加载到一个大的缩小文件中,或者我是否应该忘记这种方法并将脚本作为单独的文件导入。

我正在使用 Zend Framework 1.11.x 和 BundlePhu + JSMin

【问题讨论】:

    标签: php javascript performance zend-framework minify


    【解决方案1】:

    我在许多项目中实施的最佳解决方案是将所有 javascript 拆分为最大 200kb 的有限文件。我总是将 JS 分成两个(或很少三个)文件。第一个是库(jquery、zepto、swfobject、bootup...)和“用户代码”(我自己的 $().clicks...)。

    我的/js 文件夹中有一个.htaccess,它将所有scripts.js?version=45445 重写为compiler.php。然后编译器脚本验证版本号,检查缓存的编译脚本并返回它。如果未找到,则即时编译,放入缓存并返回。这样 js 就会每小时编译一次,并且总是缩小。

    很高兴您关心通过压缩节省的 1kb。

    这是一个示例代码:

    #.htaccess
    RewriteEngine on
    RewriteRule ^scripts_(\d+).js(.*)$ __compress_js.php?_v=$1 [L]
    

    然后是这样的,在 php 中

    <?php
    // __compress_js.php
    ob_start();
    include 'config.php';
    $cache = FileCache::getInstance();
    $cache->setPath(CACHE_PATH);
    
    $cache_key = '_compressed_' . VERSION . '.js';
    
    if ( ! $cache->check($cache_key, 3600)){
        $js = JSMin... // array of files
        $cache->write($cache_key, $js);
    }
    Header::js();
    echo $cache->read($cache_key, 3600);
    

    上述解决方案只会减慢第一次命中。其他所有人都获得了缓存的 javascript。

    【讨论】:

    • 最好使用 .htaccess 重写现有文件,这些文件在第一次运行时由 php 脚本创建。
    【解决方案2】:

    如果将所有脚本压缩到一个文件中,客户端性能会更好。浏览器必须做的最慢的事情之一就是建立一个新的 http 连接来下载一个新文件。通过将所有 JavaScript 放入一个缩小文件中,与拥有一堆单独的缩小脚本相比,您可以显着提高性能。

    另一方面,进行额外的处理会损害您的服务器性能。是否要以服务器性能换取客户端性能取决于您。但请记住,有研究表明clientside slowdowns of as little as 100ms can affect your site's conversion rate

    【讨论】:

      猜你喜欢
      • 2017-08-08
      • 2014-06-24
      • 1970-01-01
      • 2021-12-27
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多