PHP 配合JSmin库进行压缩前端JS代码进行合并访问,减少前端访问请求。

JsMin-PHP 项目地址

https://github.com/rgrove/jsmin-php

使用示例:

$js_path     = './e.js';
$js_source  = file_get_contents($js_path);
$minifiedJs = JSMin::minify($js_source);
echo $minifiedJs;

预想的访问请求

https://www.example.com/js??/js/e.js,/js/jquery.js,index.js

/js/index.php 文件内容

<?php
header ("Content-type:Application/x-javascript; Charset: utf-8");
define ('SITE_PATH', dirname ( __FILE__ ) );
define ('PUBLIC_PATH', SITE_PATH.'/../Public');
if(isset($_SERVER['QUERY_STRING'])) {
	$jsurl = '';
	if(preg_match('/^\?.*?\.(js|json)$/isU', $_SERVER['QUERY_STRING'])){
		$jsurl = ltrim($_SERVER['QUERY_STRING'],'?');
	}
	$files = explode(",", $jsurl);
	$str = '';
	foreach ($files as $key => $val){
		$path = PUBLIC_PATH.$val;
		if(is_file($path)){
			$str .= file_get_contents($path);
		}
	}

	require 'jsmin.php';
	$packed = JSMin::minify($str);
	echo $packed;
}

只是简单完成基本加载合并功能,具体使用还需要进行安全过滤等。

完)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏不想当开发的产品不是好测试

修改mysql的时间/时区

# 背景 往db中insert数据发现时间不对,因为是新DB,所以猜测是mysql设置不对 # 解决方法 方法一:通过mysql命令行模式下动态修改 show ...

580100
来自专栏杨熹的专栏

详解Mac配置虚拟环境Virtualenv,安装Python科学计算包

最近正在自学Python做科学计算,当然在很多书籍和公开课里最先做的就是安装Numpy, Scipy, Matplotlib等包,不过每次安装单独的包时,...

31380
来自专栏大魏分享(微信公众号:david-share)

IBM PowerHA 6 DARE 的功能介绍

DARE 的功能介绍 PowerHA 6.1 提供了 cluster 动态调整的功能,即在 cluster 处于活动的状态时,动态地对 cluster 拓扑和资...

418120
来自专栏伦少的博客

Redis Cluster 安装配置

转载请务必注明原创地址为:http://dongkelun.com/2018/01/09/redisClusterDeployment/

45480
来自专栏猛牛哥的博客

CentOS7安装bbr:更新到7.3,安装elrepo官方4.9正式版

1.1K20
来自专栏向治洪

使用Jenkins搭建Android自动打包环境

概述 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目;监控外部调用执行的工作。 对于我们...

479100
来自专栏java一日一条

15 个 Android 通用流行框架大全

Android自带很多测试工具:JUnit,Monkeyrunner,UiAutomator,Espresso等

12720
来自专栏王硕

原 使用pg_basebackup搭建PostgreSQL流复制环境

424110
来自专栏从零开始的linux

redis cluster

redis cluster 3台机器去搭建6个redis实例的redis cluster 安装6台redis(如何安装看前面的文章) 主机ip端口(redis-...

46550
来自专栏黑泽君的专栏

log4j WARN 的解决办法

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、U...

67630

扫码关注云+社区

领取腾讯云代金券