Google Pagespeed,自动压缩优化JS/CSS/Image

浏览: 发布日期:// 分类:技术分享 关键字: Nginx Appache Pagespeed 自动压缩优化JS/CSS/Image
这个周末,把服务器的Nginx升级了下,并加入了Google Pagespeed模块
效果很明显:
页面加载的多个JS、CSS会自动合并压缩处理
发现新版本的Pagespeed能很好的发现处理用户加载的第三方JS库,如jQuery
发现新版本的lazyload_images处理的很好 注意:CSS代码里含有背景图片这类的,要注意下图片的路径改为绝对路径,否则会导致图片引用部分404错误 具体请参考:https://developers.google.com/speed/pagespeed/ 我的安装体验过程记录如下给大家分享: ()检查下NGINX是否有modules目录,没有则创建下
# mkdir /usr/local/nginx/modules () 下载和解压缩
# cd /usr/local/src # NPS_VERSION=1.9.32.4 # wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${NPS_VERSION}-beta.zip
# unzip release-${NPS_VERSION}-beta.zip
# cp -a ngx_pagespeed-release-${NPS_VERSION}-beta /usr/local/nginx/modules/
# rm -rf release-${NPS_VERSION}-beta.zip
# rm -rf ngx_pagespeed-release-${NPS_VERSION}-beta # cd /usr/local/nginx/modules/ngx_pagespeed-release-${NPS_VERSION}-beta/
# wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
# tar -xzvf ${NPS_VERSION}.tar.gz # extracts to psol/ ()重新编译 Nginx with support for pagespeed
http://nginx.org/en/download.html
注意:如果已安装Nginx请使用升级脚本(修改增加配置选项)来重新升级编译NGINX # cd /usr/local/src
# NGINX_VERSION=1.8. # wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
# tar -xvzf nginx-${NGINX_VERSION}.tar.gz
# cd nginx-${NGINX_VERSION}/
# ./configure --add-module=/usr/local/nginx/modules/ngx_pagespeed-release-${NPS_VERSION}-beta
# make
# make install 确认下ngx_pagespeed模块已添加到安装的Nginx系统上
# /usr/local/nginx/sbin/nginx -V ()创建将由Nginx写入的一个文件缓存目录 $ mkdir /tmp/ngx_pagespeed_cache
$ chown www:www /tmp/ngx_pagespeed_cache
注意:可以将缓存目录的创建及清除工作交个启动任务脚本 ()修改配置Nginx中的ngx_pagespeed模块
想启用并配置ngx_pagespeed,就要编辑Nginx配置的server部分。 下面是我网站的配置,请参考
common_pagespeed.conf文件是独立文件,在需要开启pagespeed服务的虚拟主机文件中加载此文件(请加载在php rewrite配置之前)
------------------------------------
conf/common_pagespeed.conf;
------------------------------------
# 启用ngx_pagespeed
pagespeed on;
pagespeed FileCachePath /tmp/ngx_pagespeed_cache;
# 禁用CoreFilters
pagespeed RewriteLevel PassThrough;
# 启用压缩空白过滤器
pagespeed EnableFilters collapse_whitespace;
# 启用JavaScript库卸载
pagespeed EnableFilters canonicalize_javascript_libraries;
# 把多个CSS文件合并成一个CSS文件
pagespeed EnableFilters combine_css;
# 把多个JavaScript文件合并成一个JavaScript文件
pagespeed EnableFilters combine_javascript;
# 删除带默认属性的标签
pagespeed EnableFilters elide_attributes;
# 改善资源的可缓存性
#pagespeed EnableFilters extend_cache;
# 更换被导入文件的@import,精简CSS文件
pagespeed EnableFilters flatten_css_imports;
pagespeed CssFlattenMaxBytes ;
# 延时加载客户端看不见的图片
pagespeed EnableFilters lazyload_images;
# 启用JavaScript缩小机制
pagespeed EnableFilters rewrite_javascript;
# 启用图片优化机制
#pagespeed EnableFilters rewrite_images;
# 预解析DNS查询
pagespeed EnableFilters insert_dns_prefetch;
# 重写CSS,首先加载渲染页面的CSS规则
pagespeed EnableFilters prioritize_critical_css; # And no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" "";}
location ~ "^/pagespeed_static/" {}
location ~ "^/ngx_pagespeed_beacon$" {}
location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }
location /pagespeed_console { allow 127.0.0.1; deny all; }
location ~ ^/pagespeed_admin { allow 127.0.0.1; deny all; }
location ~ ^/pagespeed_global_admin { allow 127.0.0.1; deny all; }
# Add no rewrite if you site set rewrite
if ($request_uri ~ "(pagespeed_([^.]+)/(.*)?)") { break; }
if ($request_uri ~ "(ngx_pagespeed_([^.]+)/(.*)?)") { break; } 注意:ThinkPHP如果启用了rewrite,需要排除下Google Pagespeed 特殊的请求路径
我在测试时,发现开启图片延时加载时,有很多图区启用延迟加载后请求会报404错误,发现请求都被转发交给ThinkPHP处理啦,
解决方式如下在server{rewrite}脚本转发之前添加如下代码,我的一并放入conf/common_pagespeed.conf文件; if ($request_uri ~ "(pagespeed_([^.]+)/(.*)?)") { break; }
if ($request_uri ~ "(ngx_pagespeed_([^.]+)/(.*)?)") { break; } 注意:如果使用了TP官方麦当苗儿Thinkbox这个JQ插件
你会发现,JS报错,请前端工程师排查了下发现是经过pagespeed自动压缩合并后,includeCss这个机制的问题,前端适当重写了下就OK啦
前端还同时改写了他base.js库,注意js中的命名污染及变量范围,我们网站有几个专题页面,启用后发现JS报错,未启用前OK,最后基本都是这个原因 优化效果如下
自动处理页面加载的CSS文件,这个机制很赞,多个重用度高的外联CSS文件都被合并压缩了,重用度很低的文件直接添加到了html的header头 阿里云
 

Google Pagespeed,自动压缩优化JS/CSS/Image的更多相关文章

  1. 使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度

    使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度 一些泛WEB 2.0网站为了追求用户体验,可能会大量使用CSS和JS文件.这就导致在服务器带宽一定的情况下,多用户并发访问速度变慢.如何加 ...

  2. 自写脚本实现上线前本地批量压缩混淆 js , css 代码。

    最近做项目遇到一个要求,就是把本地的 js 和 css 进行压缩后再上线,由于之前项目并没有使用 webpack 之类的库,项目上也因为一些机密不能在线上压缩,这无疑给代码打包压缩带来了很大麻烦,于是 ...

  3. Grunt的配置及使用(压缩合并js/css)

    Grunt的配置及使用(压缩合并js/css) 安装 前提是你已经安装了nodejs和npm. 你能够在 nodejs.org 下载安装包安装.也能够通过包管理器(比方在 Mac 上用 homebre ...

  4. 关于webStrom-11.1配置less且自动生成.css和自动压缩为.min.css/.min.js

    网上看过很多配置思路,自己总结了以下, 就把我个人配置的顺序以及材料分享下,webstrom以下简称WB 1.配置less需要安装nodejs,自行安装.因为要用到npm.我是直接把npm解压到C盘根 ...

  5. 网站优化JS css压缩

    在nginx 中开启gzip压缩后,可以大大减少资js css 体积,原来200KB,压缩后只有66KB server{ gzip on; gzip_types text/plain applicat ...

  6. 前端构建工具 Gulp 压缩合并JS/CSS 并添加版本号、ES6转ES5

    Gulp 基于 Node.js 的前端构建工具,可以实现前端代码的编译(sass.less).压缩合并(JS.CSS).测试:图片的压缩:已经添加 JS 和 CSS 版本号,防止浏览器缓存. 1. 安 ...

  7. ASP.NET MVC Bundles 合并压缩(js css)

    Chrome浏览器有并发的Http请求限制,Bundles可以将多个JS文件合并成一个文件并进行压缩,最终得到一个单文件的压缩包. 第一步:BundleConfig public class Bund ...

  8. 【转载】Yui.Compressor高性能ASP.NET开发:自动压缩CSS、JS

    在开发中编写的js.css发布的时候,往往需要进行压缩,以减少文件大小,减轻服务器的负担.这就得每次发版本的时候,对js.js进行压缩,然后再发布.有没有什么办法,让代码到了服务器上边,它自己进行压缩 ...

  9. webstorm自动压缩js、css、html【工具篇】

    *注意:自动压缩的文件只能在同级目录下,不能指定文件夹,强制了文件自动保存,设置的手动保存将失效. 插件下载地址:点击这里下载 密码:e6bk 使用方法: 1.css&js 分别添加这两个,c ...

随机推荐

  1. HDU 2874 Connections between cities(LCA+并查集)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=2874 [题目大意] 有n个村庄,m条路,不存在环,有q个询问,问两个村庄是否可达, 如果可达则输出 ...

  2. Android 架构 4.总结

    以下是Keegan小钢大神原创博客: Android项目重构之路:架构篇Android项目重构之路:界面篇Android项目重构之路:实现篇 看了这几篇文章,以及下面的评论,总结一下,以便以后拓展: ...

  3. firefox dispatchevent的问题

    <!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8&qu ...

  4. 【JUnit4.10源码分析】6.1 排序和过滤

    abstract class ParentRunner<T> extends Runner implements Filterable,Sortable 本节介绍排序和过滤. (尽管JUn ...

  5. [转载]Oracle Merge的使用

    FROM: http://zhangqchang.blog.163.com/blog/static/464989732009219114653226/ 摘至网上的几个例子 一.************ ...

  6. 2017.11.30 tomcat远程调试

    参考来自:http://blog.csdn.net/afgasdg/article/details/9236877 1.jpda 有两种方式,一种是修改tomcat的catalina.bat来配置jp ...

  7. Java实现算法之--选择排序

    选择排序也是比較简单的一种排序方法,原理也比較easy理解,它与冒泡排序的比較次数同样,但选择排序的交换次数少于冒泡排序.冒泡排序是在每次比較之后,若比較的两个元素顺序与待排序顺序相反,则要进行交换, ...

  8. Netty 中文教程 (二) Hello World !详解

    1.HelloServer 详解 HelloServer首先定义了一个静态终态的变量---服务端绑定端口7878.至于为什么是这个7878端口,纯粹是笔者个人喜好.大家可以按照自己的习惯选择端口.当然 ...

  9. Mybatis学习记录(一)---- 简单的CRUD

    1 mybatis是什么? mybatis是一个持久层的框架,是apache下的顶级项目. mybatis托管到googlecode下,再后来托管到github下(https://github.com ...

  10. EasyBoot使用方法

    1 修改背景图片直接替换掉EasyBoot\disk1\ezboot目录下面的BACK.BMP文件即可.但是限于DOS功能限制,只能使用640×480像素,256位色的BMP图片.   2 鼠标左键单 ...