Saya memiliki situs php yang berjalan di server cloud. Kapan pun saya menambahkan file baru css, js, atau gambar, browser memuat file js, css, dan gambar lama yang sama yang disimpan dalam cache.
Situs saya memiliki doctype dan meta tag seperti di bawah ini
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Page-Enter" content="blendTrans(Duration=1.0)">
<meta http-equiv="Page-Exit" content="blendTrans(Duration=1.0)">
<meta http-equiv="Site-Enter" content="blendTrans(Duration=1.0)">
<meta http-equiv="Site-Exit" content="blendTrans(Duration=1.0)">
Karena doctype dan kode meta di atas, saya memuat file yang sama yang di-cache di browser, bukan yang baru
php
http-headers
browser-cache
cache-control
ArrayOutOfBound
sumber
sumber
No Cache in all Browsers
. Anda juga dapat melakukan? RandomGeneratedNumber pada file yang tidak ingin di-cache.Jawaban:
coba ini
sumber
session_start()
setelahnya, ini akan menimpa header Anda denganCache-Control: private, max-age=10800, pre-check=10800
karena 180 menit adalah nilai defaultsession.cache_expire
. Jika Anda tidak dapat menghindari memulai sesi, tetapi Anda perlu menonaktifkan penggunaan cachesession_cache_limiter('private');session_cache_expire(0);
.header
fungsi adalah boolean untuk diganti . Parameter ganti opsional menunjukkan apakah header harus menggantikan header serupa sebelumnya, atau menambahkan header kedua dari jenis yang sama.Di sini, jika Anda ingin mengontrolnya melalui HTML: lakukan seperti di bawah ini Opsi 1:
Dan jika Anda ingin mengontrolnya melalui PHP: lakukan seperti di bawah ini Opsi 2:
DAN Opsi 2 SELALU LEBIH BAIK untuk menghindari masalah cache berbasis proxy.
sumber
Anda dapat mencoba ini:
Semoga membantu mencegah Cache, jika ada!
sumber
Saya mengalami masalah dengan menyimpan file css saya. Menetapkan header di PHP tidak membantu saya (mungkin karena header perlu disetel di file stylesheet alih-alih halaman yang menautkannya?).
Saya menemukan solusinya di halaman ini: https://css-tricks.com/can-we-prevent-css-caching/
Solusinya:
Tambahkan stempel waktu sebagai bagian kueri dari URI untuk file yang ditautkan.
(Dapat digunakan untuk css, js, gambar dll.)
Untuk pengembangan:
<link rel="stylesheet" href="style.css?<?php echo date('Y-m-d_H:i:s'); ?>">
Untuk produksi (di mana sebagian besar cache adalah hal yang baik):
<link rel="stylesheet" type="text/css" href="style.css?version=3.2">
(dan tulis ulang secara manual jika diperlukan)
Atau kombinasi keduanya:
EDIT:
Atau kombinasi yang lebih cantik dari keduanya:
sumber
Mencegah cache browser bukanlah ide yang baik tergantung pada kasusnya. Mencari solusi saya menemukan solusi seperti ini:
Masalahnya di sini adalah jika file ditimpa selama pembaruan di server, yang merupakan skenario saya, cache diabaikan karena stempel waktu diubah meskipun konten file sama.
Saya menggunakan solusi ini untuk memaksa browser mengunduh aset hanya jika kontennya diubah:
sumber
stat
menelepon. Tanpa cache sistem file, 16ns, puncak? Dengan cache, andal <8ns. Nano. Dan di sistem saya, MD5 dapat memproses 754 MiB / s tanpa berkedip. (openssl speed md5
) Gabungan, file CSS 100 KB akan memiliki overhead tambahan gabungan… 129µs (mikrodetik, 0,1295 md) + 8ns (yang tidak berkontribusi secara berarti ke angka akhir) = 129µs.hash_file('md5', $deployment_counter)
atauhash_file('md5', $cache_clear_counter)
yang pertama terlintas dalam pikiran.