ホームページ > バックエンド開発 > PHPチュートリアル > PHPでjsファイルとcssファイルを動的に圧縮する手順の詳細な説明

PHPでjsファイルとcssファイルを動的に圧縮する手順の詳細な説明

php中世界最好的语言
リリース: 2023-03-25 21:18:02
オリジナル
1793 人が閲覧しました

这次给大家带来PHP动态压缩js与css文件步骤详解,PHP动态压缩js与css文件的注意事项有哪些,下面就是实战案例,一起来看一下。

正式发布产品时,我们希望将项目里的js,css合并压缩,以减少http请求、防止轻易查看源代码。

使用

只需要在头部引入一下代码即可:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<meta charset="utf-8"/>

<title>demo</title>

<?php

//定义需要压缩的文件

$css = array(

CSS_PATH . &#39;base.css&#39;,

CSS_PATH . &#39;style.css&#39;,

CSS_PATH . &#39;my.css&#39;

);

$js = array(

PUB_PATH . &#39;/lib/zepto.min.js&#39;,

PUB_PATH . &#39;/js/1.js&#39;,

JS_PATH . &#39;2.js&#39;,

);

$css_path = base_url(parse_css($css));

$js_path = base_url(parse_script($js));

?>

<link rel="stylesheet" type="text/css" href="<?php echo $css_path ?>" rel="external nofollow" >

<script src="<?php echo $js_path ?>"></script>

<!--下面可以继续放不能压缩或者不想压缩的文件-->

<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

ログイン後にコピー

这段代码会在指定的目录(例如common/)里生成压缩过后的js和css.每次更新了js,css内容,请先删除生成的压缩文件。

示例:

1

2

4e387d5edce14cc2bd6396f6ebb7921b.css

7c10211f113f3175489196d336d67734.js

ログイン後にコピー

注意:

编写的css和js文件一定要符合规范。例如一定要加分号。js的function可以不加分号。

引用的资源

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

/**

*  合并压缩css

*/

function parse_css($urls)

{

  $url = md5(implode(&#39;,&#39;, $urls));

  $path = FCPATH. &#39;static/parse/&#39;;

  $css_url = $path . $url . &#39;.css&#39;;

  if (!file_exists($css_url)) {

    if (!file_exists($path))

      mkdir($path, 0777);

    $css_content = &#39;&#39;;

    foreach ($urls as $url) {

      $css_content .= @file_get_contents($url);

    }

    $css_content = str_replace("\r\n", &#39;&#39;, $css_content); //清除换行符

    $css_content = str_replace("\n", &#39;&#39;, $css_content); //清除换行符

    $css_content = str_replace("\t", &#39;&#39;, $css_content); //清除制表符

    $css_content = str_replace("../images/", "./../common/images/", $css_content);

    @file_put_contents($css_url, $css_content);

  }

  $css_url = str_replace(FCPATH, &#39;&#39;, $css_url);

  return $css_url;

}

/**

*  合并压缩js

*/

function parse_script($urls)

{

  $url = md5(implode(&#39;,&#39;, $urls));

  $path = FCPATH. &#39;/static/parse/&#39;;

  $js_url = $path . $url . &#39;.js&#39;;

  if (!file_exists($js_url)) {

    if (!file_exists($path))

      mkdir($path, 0777);

    load_qy_lib(&#39;JavaScriptPacker&#39;);

    $js_content = &#39;&#39;;

    foreach ($urls as $url) {

      $append_content = @file_get_contents($url) . "\r\n";

      $packer = new JavaScriptPacker($append_content);

      $append_content = $packer->_basicCompression($append_content);

      $js_content .= $append_content;

    }

    @file_put_contents($js_url, $js_content);

  }

  $js_url = str_replace(FCPATH, &#39;&#39;, $js_url);

  return $js_url;

}

ログイン後にコピー

项目里引用到第三方类库JavaScriptPacker可以在github下载:

gkralik/php-uglifyjs
https://github.com/gkralik/php-uglifyjs

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

/**

 * 9 April 2008. version 1.1

 *

 * This is the php version of the Dean Edwards JavaScript&#39;s Packer,

 * Based on :

 *

 * ParseMaster, version 1.0.2 (2005-08-19) Copyright 2005, Dean Edwards

 * a multi-pattern parser.

 * KNOWN BUG: erroneous behavior when using escapeChar with a replacement

 * value that is a function

 *

 * packer, version 2.0.2 (2005-08-19) Copyright 2004-2005, Dean Edwards

 *

 * License: http://creativecommons.org/licenses/LGPL/2.1/

 *

 * Ported to PHP by Nicolas Martin.

 *

 * ----------------------------------------------------------------------

 * changelog:

 * 1.1 : correct a bug, &#39;\0&#39; packed then unpacked becomes &#39;\&#39;.

 * ----------------------------------------------------------------------

 *

 * Changes:

 * 2014-08-28: grkalik: change class for composer support. no functionality change.

 *

 */

ログイン後にコピー

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

PHP计算特大数字的整数集

PHP+ajax实现获取新闻数据案例详解

以上がPHPでjsファイルとcssファイルを動的に圧縮する手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート