2013
Nov
03

PageSpeed 是很相当强大的 Web 优化工具,透过这个工具可以解决 CSS Spite ,Combine CSS File, CSS Compress , Combine JS file, JS Compress , Lazyload, 图片大小优化等等。

而且 PHP,HTML 原始码完全不用更改,只要安装好这个 pagespeed apache module,上述功能就内建进去罗。

Pagespeed 安装

RPM 安装方式

根据你的 OS 与 CPU 下载适合的 rpm ,如果你的 CPU 是 arm arch ,那就得参考下面的 Source Code 编译

Source 安装方式

成功编译完成后,就可以在 src/out/Release 资料夹中找到 libmod_pagespeed.so, libmod_pagespeed_ap24.so 这两个档案,这些就是 pagespeed module ,装到 apache module 目录下之后,再设定 conf 即可使用。

apache conf 设定

pagespeed.conf
  1. <IfVersion < 2.4>
  2. LoadModule pagespeed_module /usr/local/lib/apache/mod_pagespeed.so
  3. </IfVersion>
  4. <IfVersion >= 2.4.1>
  5. LoadModule pagespeed_module /usr/local/lib/apache/mod_pagespeed_ap24.so
  6. </IfVersion>
  7.  
  8.  
  9. <IfModule pagespeed_module>
  10. ModPagespeed on
  11. ModPagespeedInheritVHostConfig on
  12. ModPagespeedFileCachePath "/var/cache/mod_pagespeed/"
  13.  
  14. # 指定需要优化的 Domain 与路径
  15. ModPagespeedDomain test.puritys.me
  16. ModPagespeedDomain http://www.puritys.me/xxxpath
  17.  
  18. ModPagespeedFileCachePath "/var/cache/mod_pagespeed/"
  19. ModPagespeedEnableFilters combine_css,extend_cache
  20. ModPagespeedEnableFilters combine_javascript
  21. ModPagespeedEnableFilters rewrite_images
  22. ModPagespeedEnableFilters inline_preview_images
  23. ModPagespeedEnableFilters convert_meta_tags
  24. ModPagespeedEnableFilters collapse_whitespace
  25. </IfModule>

在 cpu arm arch 上安装的问题

我在 Raspberry Pi 中使用 Pidora OS , CPU arm arch ,碰到下列的问题。

NameError: name 'arm_version' is not defined while evaluating condition 'target_arch == "arm" and arm_version >= 7' in /www/devPKG/apache/pagespeed/src/third_party/libwebp/libwebp.gyp while loading dependencies of /www/devPKG/apache/pagespeed/src/pagespeed/kernel.gyp while loading dependencies of /www/devPKG/apache/pagespeed/src/net/instaweb/instaweb.gyp while loading dependencies of /www/devPKG/apache/pagespeed/src/net/instaweb/instaweb_apr.gyp while loading dependencies of /www/devPKG/apache/pagespeed/src/net/instaweb/mod_pagespeed.gyp while loading dependencies of /www/devPKG/apache/pagespeed/src/build/all.gyp while trying to load /www/devPKG/apache/pagespeed/src/build/all.gyp

最后的解决方式: 使用下列指令,补上刚刚因为错误而下载不完整的部分,

  • python build/gyp_chromium -Dchannel=beta -Darm_version=7 -Ddeb_arch=1 -Drpm_arch=1

或是修改 third_party/chromium/src/build/gyp_chromium ,补上下列三行

Example
  1. args.append('-Darm_version=7')
  2. args.append('-Ddeb_arch=7')
  3. args.append('-Drpm_arch=7')

问题1:

sparseconfig.h not found

下载这个 header

问题2:

third_party/gflags/src/gflags.cc:114:27: fatal error: gflags/gflags.h: No such file or directory , third_party/gflags/src/gflags.cc:91:20: fatal error: config.h: No such file or directory

gflags.h, gflags_completions.h

config.h


问题3:

third_party/google-sparsehash/src/google/sparsehash/hashtable-common.h:65:32: error: ‘operator()’ is not a member of ‘sh_hashtable_settings, __gnu_cxx::hash >, unsigned int, 4>::hasher {aka __gnu_cxx::hash >}’

这个问题是因为 gcc 没有 hash::operator 这个 method。

  • 解法1 是升级 gcc 至 4.6 以上
  • 解法 2 修改 hashtable-common.h ,将 return size 强迫改成1 , 先 compile 过再说吧。
Example
  1. size_type hash(const key_type& v) const {
  2. //return hasher::operator()(v);
  3. return 1;
  4. }

回應 (Leave a comment)