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: