Skip to main content
  1. Posts/

Enable Google PageSpeed Module

·2 mins·
linux linux apache nginx
Table of Contents

Modul PageSpeed dirancang untuk mengoptimalkan server web dan mempercepat respon time sehingga membuat halaman web dapat dimuat lebih cepat serta menghemat bandwidth.

Google PageSpeed merupakan modul open-source yang dibuat oleh Google dan dapat digunakan pada beberapa server web seperti Apache dan Nginx.

Build instructions
#

Download ngx_pagespeed dengan script berikut.

NPS_VERSION=1.13.35.2-stable
cd
wget -O- https://github.com/apache/incubator-pagespeed-ngx/archive/v${NPS_VERSION}.tar.gz | tar -xz
nps_dir=$(find . -name "*pagespeed-ngx-${NPS_VERSION}" -type d)
cd "$nps_dir"
NPS_RELEASE_NUMBER=${NPS_VERSION/beta/}
NPS_RELEASE_NUMBER=${NPS_VERSION/stable/}
psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_RELEASE_NUMBER}.tar.gz
[ -e scripts/format_binary_url.sh ] && psol_url=$(scripts/format_binary_url.sh PSOL_BINARY_URL)
wget -O- ${psol_url} | tar -xz  # extracts to psol/

Cek release note untuk versi terbaru dari PageSpeed.

Selanjutnya download source code nginx sesuai versi yang Anda gunakan.

wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -xaf nginx-1.24.0.tar.gz

Pindah folder incubator-pagespeed-ngx-1.13.35.2-stable ke dalam folder nginx-1.24.0

mv incubator-pagespeed-ngx-1.13.35.2-stable nginx-1.24.0/ngx_pagespeed

Compile modul pagespeed

cd nginx-1.24.0
./configure --with-compat --add-dynamic-module=ngx_pagespeed
make modules

Jika menemukan error seperti berikut

ngx_pagespeed/src/ngx_pagespeed.cc:407:36: error: request for member ‘elts’ in ‘r->ngx_http_request_s::headers_out.ngx_http_headers_out_t::cache_control’, which is of pointer type ‘ngx_table_elt_t*’ {aka ‘ngx_table_elt_s*’} (maybe you meant to use ‘->’ ?)
   if (r->headers_out.cache_control.elts == NULL) {
                                    ^~~~
ngx_pagespeed/src/ngx_pagespeed.cc:408:35: error: cannot convert ‘ngx_table_elt_t**’ {aka ‘ngx_table_elt_s**’} to ‘ngx_array_t*’
     ngx_int_t rc = ngx_array_init(&r->headers_out.cache_control, r->pool,
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Anda dapat memperbaikinya dengan men-download patch ngx_pagespeed.cc.

mv ngx_pagespeed/src/ngx_pagespeed.cc{,.bkp} -v
curl -s https://raw.githubusercontent.com/apache/incubator-pagespeed-ngx/master/src/ngx_pagespeed.cc > ngx_pagespeed/src/ngx_pagespeed.cc

Lalu ulangi proses compile.

Setelah proses compile selesai, selanjutnya copy file modul ke modules path nginx

cp objs/ngx_pagespeed.so /etc/nginx/modules/

Load module pagespeed.

nano /etc/nginx/modules.conf.d/pagespeed.conf
load_module "modules/ngx_pagespeed.so";

PageSpeed Configuration
#

Buat file pagespeed.conf dan edit seperti berikut

nano /etc/nginx/conf.d/pagespeed.conf
pagespeed On;
pagespeed InPlaceResourceOptimization off;
pagespeed FetchHttps enable;
pagespeed FileCachePath "/var/cache/ngx_pagespeed/";
pagespeed EnableFilters remove_comments;
pagespeed EnableFilters local_storage_cache;
pagespeed EnableFilters extend_cache_pdfs;
pagespeed EnableFilters combine_css;
pagespeed EnableFilters rewrite_css;
pagespeed EnableFilters combine_javascript;
pagespeed EnableFilters rewrite_javascript;
pagespeed EnableFilters extend_cache,rewrite_images;
#pagespeed FileCacheSizeKb 102400;
pagespeed FileCacheCleanIntervalMs 3600000;
pagespeed FileCacheInodeLimit 500000000;
pagespeed FetcherTimeoutMs 5000;

# Pagespeed Admin
pagespeed StatisticsPath /ngx_pagespeed_statistics;
pagespeed GlobalStatisticsPath /ngx_pagespeed_global_statistics;
pagespeed MessagesPath /ngx_pagespeed_message;
pagespeed ConsolePath /pagespeed_console;
pagespeed AdminPath /pagespeed_admin;
pagespeed GlobalAdminPath /pagespeed_global_admin;
pagespeed StatisticsLogging on;
pagespeed LogDir "/var/log/nginx/pagespeed/";
pagespeed MessageBufferSize 100000;

Jika ingin disable filter, maka dapat diedit seperti berikut

pagespeed DisableFilters combine_css

Lalu pada bagian Pagespeed Admin adalah opsional. Bisa Anda disable apabila tidak sedang melakukan debugging.

Restart service nginx untuk menerapkan konfigurasi.

systemctl restart nginx

Untuk mengecek PageSpeed telah aktif

$ curl -I example.com
HTTP/1.1 200 OK
Server: nginx/1.24.0
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/7.4.33
Link: <http://example.com/wp-json/>; rel="https://api.w.org/"
Link: <http://example.com/wp-json/wp/v2/pages/25>; rel="alternate"; type="application/json"
Link: <http://example.com/>; rel=shortlink
Date: Thu, 19 Oct 2023 00:43:48 GMT
X-Page-Speed: 1.13.35.2-0
Cache-Control: max-age=0, no-cache

Referensi:

Related

Enable Brotli Compression
·2 mins
linux apache nginx linux
Error /usr/bin/ld: cannot find -lbrotlicommon
·2 mins
linux linux
Enable SWAP on Linux
·1 min
linux linux
Install Redis di Linux
·1 min
linux php linux
Install Memcached di Linux
·1 min
linux php linux
Install APCu di Linux
·1 min
linux php linux