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)