3

サーバー側にJSMinミニファイを使用したWebサイトがあります。問題は、JSMinを実装した後にサーバーが遅くなったということです

これは、他の特定のファイルをインポートするURLがあり、これらのファイルが縮小されたファイルに追加されるために発生します。

ここで、これらの特定のスクリプトを常に1つの大きな縮小ファイルにロードする必要があるのか​​、それともこのアプローチを忘れてスクリプトを個別のファイルとしてインポートする必要があるのか​​を知りたいと思います。

BundlePhu+JSMinでZendFramework1.11.xを使用しています

4

2 に答える 2

3

私が多くのプロジェクトで実装した最善の解決策は、すべてのJavaScriptを最大200kbの有限ファイルに分割することです。私は常にJSを2つ(またはまれに3つ)のファイルに分割します。1つ目は、ライブラリ(jquery、zepto、swfobject、bootup ...)と「ユーザーコード」(私自身の$()。clicks ...)です。

.htaccessフォルダ内にすべてを/jsに書き換えます。次に、コンパイラスクリプトはバージョン番号を確認し、キャッシュされたコンパイル済みスクリプトをチェックして返します。見つからない場合は、オンザフライでコンパイルし、キャッシュに入れて返します。そうすれば、jsは1時間ごとにコンパイルされ、常に縮小されます。scripts.js?version=45445compiler.php

圧縮で節約できる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が提供されます。

于 2013-03-25T18:02:04.567 に答える
2

すべてのスクリプトを1つのファイルに圧縮すると、クライアント側のパフォーマンスが向上します。ブラウザが実行しなければならない最も遅いことの1つは、新しいファイルをダウンロードするために新しいhttp接続を確立することです。すべてのJavaScriptを1つの縮小ファイルに入れることで、多数の個別の縮小スクリプトを使用するよりもパフォーマンスを大幅に向上させることができます。

一方、その余分な処理を行うと、サーバーのパフォーマンスが低下します。サーバーのパフォーマンスとクライアントのパフォーマンスをトレードオフするかどうかは、あなた次第です。ただし、わずか100ミリ秒のクライアント側の速度低下がサイトのコンバージョン率に影響を与える可能性があることを示す調査があることに注意してください。

于 2013-03-25T17:54:08.947 に答える