Google Pagespeed memberitahu saya untuk meningkatkan caching browser ketika caching sudah diaktifkan

8

Google Pagespeed Insights masih memberi tahu saya bahwa saya harus mengaktifkan cache browser, tetapi saya tidak mengerti apa yang saya lewatkan. Saya menggunakan cloudflare dengan optimisasi diaktifkan. Saya melihat header HTTP ini di alat pengembang chrome:

kontrol cache: publik, usia maks = 86400

jadi caching sepertinya sudah diaktifkan! Saya juga menambahkan

<staticContent>
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" />
</staticContent>

di file web.config saya.

Saya tidak tahu harus berbuat apalagi. Ini kesalahan yang Google berikan kepada saya:

masukkan deskripsi gambar di sini

euge9522
sumber
2
Anda perlu melakukan ~ 8 hari untuk kadaluwarsa agar dapat melewati aturan itu.
dhaupin

Jawaban:

6

24 jam terlalu sedikit untuk mencukupi sebagai kontrol cache :) Secara teori, gambar tidak pernah berubah tanpa nama mereka juga berubah, sehingga Anda dapat mengaturnya dengan mudah menjadi setahun (atau sebulan jika Anda merasa lebih nyaman dengan itu).

Jika Anda mengganti gambar dengan gambar baru, itu memiliki nama baru. picture-of-cat-on-18th-birthday.jpgtidak akan tiba-tiba menjadi gambar lain dengan nama file yang sama. Karena alasan ini, nama file harus agak spesifik untuk kontennya.

Untuk jenis sumber daya lain seperti CSS dan JS Anda mungkin ingin memilih taktik yang berbeda. Anda memiliki (sering) mengubah file, dan tidak pernah / nyaris tidak berubah, Anda ingin membagi panjang cachingnya:

  • tidak pernah mengubah -> cache yang sangat panjang
  • mengubah -> cache rendah

Ini tidak bisa dilakukan. Anda dapat melakukannya keduanya atau tidak sama sekali, .htaccess melihat tipe file.
Karena itu, Anda mengaturnya ke cache lama, dan menggunakan postfix untuk memaksa unduhan baru jika itu berubah:

<script src="static.js" />  
<script src="changing.js?last_update=150422" />

Dengan cara ini pengguna hanya perlu mengunduh ulang jika Anda benar-benar melakukan perubahan.
Teknik ini bekerja pada semua sumber daya. Selalu bertujuan untuk durasi caching tertinggi.

Martijn
sumber
Terima kasih! memecahkan masalah. ya itu terlalu pendek, membuat semuanya menjadi 8 hari sehingga tidak akan memberi saya pesan lagi. masalahnya adalah widget! hal-hal seperti purechat dan kudobuzz, plugin facebook dan google +. mereka memperlambat situs saya dan tidak melakukan caching dengan baik ...
euge9522
connect.facebook.net/en_US/all.js (20 menit) connect.facebook.net/it_IT/sdk.js (20 menit) apis.google.com/js/api.js (30 menit) oauth.googleusercontent.com … E: rpc: shindig.random: shindig.sha1.js? C = 2 (60 menit) google-analytics.com/analytics.js (2 jam)
euge9522
Anda dapat mengatur cache yang besar pada file CSS dan JS selama Anda menanyakan timestamp src ... yang dapat Anda lakukan secara dinamis dengannya filemtime(). Kemudian jika file diubah uri baru akan dibuat, memaksa akuisisi kembali aset tanpa membersihkan cache dan hal-hal lainnya. Dapat melakukan hal yang sama dengan gambar atau apa pun juga. Dan saya pikir Google suka waktu cache sekitar 8 hari minimum untuk melewati kecepatan halaman.
dhaupin
4

Saya melihat bahwa jawaban sebelumnya mengatakan bahwa 24 jam tidak cukup. Tetapi ketika melihat ke dalam dokumen Google: https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching#defining-optimal-cache-control-policy dikatakan bahwa gambar di-cache untuk 1 hari untuk caching yang optimal.

Caching gambar untuk waktu singkat masuk akal, karena untuk meningkatkan SEO, lebih baik untuk tidak sidik jari gambar. Jadi itu adalah trade-off yang bagus jika Anda ingin mengubah gambar.

Selain itu, setelah 24 jam gambar akan dimuat lagi (ketika Anda mengatur kontrol cache menjadi 1 hari), itu akan menggunakan e-tag dan membandingkan gambar dengan membuat server pulang pergi dan rekam ulang.

Jadi, pertanyaannya tetap mengapa alat wawasan kecepatan halaman tidak menghormati rekomendasi Google sendiri.

Samuel
sumber