Panduan ini menunjukkan cara mengkonfigurasi pengaturan kedaluwarsa tajuk dengan Apache dengan benar, mengoptimalkan kinerja server web dalam menyajikan file statis, seperti gambar, file CSS atau JavaScript.
Banyak bandwidth di server Anda akan disimpan, dengan menetapkan tanggal minimum untuk file caching. Akibatnya, dengan menggunakan cache browser klien, situs web yang di-host akan memuat lebih cepat.
Pertama, sambungkan ke server Anda melalui koneksi SSH. Jika Anda belum melakukannya, mengikuti panduan kami disarankan untuk melakukannya terhubung dengan aman dengan SSH. Dalam hal server lokal, buka langkah berikutnya dan buka terminal server Anda.
Mengaktifkan modul yang diperlukan
Untuk mengaktifkan pengiriman Header yang diperlukan, pertama-tama aktifkan modul Apache terkait:
$ sudo a2enmod expires
Dan kemudian restart layanan:
$ sudo service apache2 restart
Konfigurasi modul
Konfigurasi modul dapat dimasukkan sebagai berikut :
- Dalam konfigurasi Apache: itu akan diwarisi oleh semua situs yang dikendalikan oleh Apache (host virtual dan non-virtual)
- Dalam wadah host virtual
- Dalam direktif < Direktori > atau file .htaccess
Dalam contoh berikut, ini dimasukkan dalam konfigurasi situs default:
$ sudo vim /etc/apache2/sites-available/000-default.conf
Kemudian tambahkan konfigurasi berikut:
<IfModule mod_expires.c>
<FilesMatch "\.(jpe?g|png|gif|js|css)$">
ExpiresActive On
ExpiresDefault "access plus 1 week"
</FilesMatch>
</IfModule>
Melalui arahan FilesMatch file mana yang harus disimpan oleh browser klien (dalam hal ini css, jpg, png, gif dan js) sedang ditentukan.hile, melalui ExpiresDefault, berapa lama mereka harus disimpan (dalam contoh ini, seminggu) untuk ditunjukkan.
Untuk menerapkan perubahan, mulai ulang Apache:
$ sudo service apache2 restart
Selain metode FilesMatch dan ExpiresDefault, ExpiresByType dapat digunakan untuk mengatur Header Expires untuk setiap jenis file, misalnya:
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpg "access plus 60 days"
ExpiresByType image/png "access plus 60 days"
ExpiresByType image/gif "access plus 60 days"
ExpiresByType image/jpeg "access plus 60 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/javascript "access plus 1 week"
</IfModule>
Dengan menggunakan metode ini, kontrol yang lebih granular selama durasi cache dapat diperoleh dan caching data Ajax, dengan tidak memasukkan aplikasi / javascript tipe mime dapat diperoleh.
Untuk kedua arahan, sintaks untuk menunjukkan durasi cache adalah sama, yaitu:
“[base] plus [valore] [tipo] [valore] [tipo] [valore] [tipo] …”
Nilai dasar dapat berupa:
- akses: tanggal permintaan klien
- modifikasi: tanggal modifikasi file
Sementara tipe dapat memiliki nilai-nilai berikut:
- tahun: tahun
- bulan: bulan
- minggu: minggu
- hari: hari
- jam: jam
- menit: menit
- detik: detik
Beberapa contoh konfigurasi adalah:
# One year cache expiry
ExpiresByType image/jpeg "access plus 1 year"
#Furthermore, more than one unit of measurement in sequence can be added. For example:
# Set 1-month, 15- day and 2-hour expiry
ExpiresByType text/html "access plus 1 month 15 days 2 hours"
# Cache expiry from the file modification date more than 5 hours and 3 minutes
ExpiresByType image/gif "modification plus 5 hours 3 minutes"
Harap diingat bahwa jika Anda harus mengubah konten file yang di-cache, yang terakhir tidak akan diunduh oleh klien sampai waktu caching berakhir. Ini dapat menyebabkan kegagalan fungsi di situs web Anda.
Meskipun klien tidak dapat dipaksa untuk mengabaikan cache yang disimpan sebelumnya, beberapa teknik dapat digunakan untuk menghindari masalah ini.
Metode yang sering digunakan adalah mengubah nama file yang baru saja dimodifikasi (misalnya dari style.css ke style-v2.css) atau mengubah tautan dengan menambahkan nomor versi, misalnya dari:
<script src="https://www.domain.com/js/myScript1.js"></script>
untuk yang berikut:
<script src="https://www.domain.com/js/myScript1.js?v=3.1"></script>