it-swarm.dev

Apakah ada cara untuk mengunduh browser untuk mengunduh/mengunduh gambar?

Saya memiliki masalah ketika pengguna melaporkan bahwa gambar mereka tidak diunggah dan yang lama masih ada. Pada pemeriksaan lebih dekat gambar-gambar baru ada di sana, mereka hanya memiliki nama yang sama dengan yang lama. Apa yang saya lakukan pada unggahan adalah saya mengganti nama gambar untuk keperluan SEO. Ketika mereka menghapus gambar, indeks lama menjadi tersedia dan digunakan kembali. Karena itu ia memiliki nama gambar yang sama. 

Apakah ada cara untuk (saya pikir mungkin ada tag meta untuk ini) untuk memberitahu browser untuk tidak menggunakan cahce-nya?

Jawaban yang lebih baik adalah mengubah nama gambar menjadi sesuatu yang sama sekali baru. Saya akan mengerjakannya tetapi sementara itu adalah solusi cepat sementara saya mengerjakan masalah yang lebih besar.

36
uriDium

Tambahkan string kueri dengan nomor unik sembarang (atau waktu, atau nomor versi, dll.):

<img src="image.png?80172489074" alt="a cool image" />

Ini akan menghasilkan permintaan baru, karena URL yang berbeda.

107
knittl

Itu sulit. Anda benar-benar ingin gambar di-cache, tetapi kemudian Anda tidak ingin men-cache begitu gambar baru tersedia:

  • Menggunakan tajuk kedaluwarsa dengan tanggal di masa lalu mencegah caching apa pun. Buruk
  • Menambahkan parameter "cache busting"? 342038402 dapat memperbaiki masalah, tetapi juga dapat mencegah gambar dari di-cache, yang bukan yang Anda inginkan. Buruk.
  • Menggunakan tajuk kedaluwarsa dengan singkat (misalkan 1 jam) kedaluwarsa lebih baik ... setelah satu jam pengguna akan melihat gambar, tetapi server web Anda tidak harus menayangkannya setiap waktu. Kompromi, tetapi jam berapa berfungsi? Sangat tidak layak.

Solusinya? Saya dapat memikirkan dua opsi yang baik:

  • Lihatlah eTags, dan kemampuan Anda untuk menggunakannya. Ini dirancang untuk situasi ini. Browser akan secara eksplisit menanyakan server Anda apakah file tersebut terbaru atau tidak. Anda bisa mengaktifkannya di Apache jika Anda tidak memilikinya aleady.
  • Buat URL baru untuk setiap gambar baru (dan gunakan tajuk kedaluwarsa yang jauh di masa depan). Ini yang sedang Anda kerjakan.
20
ndp

Anda dapat memasukkan http-equiv dalam tag <meta> yang akan memberi tahu browser untuk tidak menggunakan cache (atau bahkan lebih baik - menggunakannya dengan cara tertentu), tetapi lebih baik untuk mengkonfigurasi server untuk mengirim header http cache yang tepat. Lihat artikel tentang caching .

Meski demikian, beberapa browser mungkin tidak mendukung semua standar http, tapi saya percaya itulah cara yang harus diambil.

4
samuil

Tambahkan datetime saat ini ke image src:

<img src="yourImage.png?v=<?php echo Date("Y.m.d.G.i.s")?>" />
3
Rob Vanders

anda dapat mengontrol perilaku cache dengan bermain dengan header HTTP.

pengaturan header yang kedaluwarsa di masa lalu akan memaksa browser untuk tidak menggunakan versi cache.

Expires: Sat, 26 Jul 1997 05:00:00 GMT

Anda dapat berkonsultasi dengan RFC untuk mendapatkan rincian lebih lanjut. 

2
RageZ

di PHP Anda dapat menggunakan trik ini

<img src="image.png?<?php echo time(); ?>" />

Fungsi time () menunjukkan cap waktu saat ini. Setiap memuat halaman berbeda. Jadi kode ini menipu browser: ia membaca jalur lain dan "berpikir" bahwa gambar diubah sejak pengguna mengunjungi situs tersebut terakhir kali. Dan harus mengunduh ulang, alih-alih menggunakan cache.

1

Jika Anda melihat data yang dipertukarkan antara browser Anda dan server, Anda akan melihat bahwa browser akan mengirimkan permintaan HTTP HEAD untuk gambar. Hasilnya akan berisi waktu modifikasi (tetapi bukan data gambar yang sebenarnya). Pastikan kali ini berubah jika gambar berubah di server dan browser harus mengunduh gambar lagi.

1
Aaron Digulla

Di PHP Anda dapat mengirim nomor acak atau cap waktu saat ini:

<img src="image.jpg?<?=Date('U')?>">

atau

<img src="image.jpg?<?=Rand(1,32000)?>">
0
Arvy

Acak. Cukup gunakan beberapa nomor acak dan tambahkan dengan nama file gambar. 

<img src="image.jpg?<?=Rand(1,1000000)?>">
0
stackFan