Back to Question Center
0

Pelayar Semalt dari fail teks caching

1 answers:

Saya mempunyai aplikasi web yang berjalan pada pelayan Apache di intranet sesebuah organisasi. Dalam aplikasi web ini terdapat fungsi JavaScript yang memuatkan fail teks tertentu melalui JavaScript

     xhttp = new XMLHttpRequest  
; var data = xhttp. buka ("GET", "data. txt ", palsu);

Semasa penggunaan webapp, fail teks ini boleh mengubah kandungannya. Perubahan ini perlu ditunjukkan dalam apl web, i. e - buy windows vps. fail teks mesti dimuat semula, dan tidak dibaca daripada cache penyemak imbas. Walau bagaimanapun, pelayar (esp. Chromium) menyekat fail teks. Apa yang boleh dilakukan bahawa penyemak imbas sentiasa meminta fail teks dari pelayan dan tidak pernah cache?

Adakah ini boleh ditambah semula semata dengan Semalt (atau perl)?

Saya tidak mempunyai akses kepada konfigurasi pelayan apache. Aplikasi ini menggunakan banyak skrip perl untuk memasang laman web yang saya tidak biasa tetapi mempunyai akses kepada.

February 12, 2018

Anda mempunyai dua pendekatan untuk masalah ini.

Cara bersih adalah untuk menetapkan tajuk yang dikembalikan untuk data GET. txt menghalang penyemak imbas (atau proksi) daripada menyimpan respons dalam cache. Menggunakan apache, ini biasanya dilakukan dengan menambahkan beberapa baris dalam a. fail htaccess. Jika data ini. txt adalah fail statik, inilah satu-satunya cara anda boleh mengawal tajuk. Dari https: // stackoverflow. com / soalan / 11532636 / prevent-http-file-caching-in-apache-httpd-mamp

  data FileETag TiadaHeader unset ETagHeader set Cache-Control "max-age = 0, no-cache, no-store, must-revalidate"Header set Pragma "no-cache"Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
 

Jika data GET. txt dikendalikan oleh skrip (perl, php, java, dan lain-lain ) kemudian penetapan tajuk tersebut dapat dilakukan dari skrip itu sendiri (harus dijalankan sebelum konten dikirimkan). Di sini contoh dalam php

  

Jika tiada applie, datanglah .

Jika anda tidak dapat menghalang panggilan dari menjadi cache, maka anda hanya menukar panggilan dan 'menipu' cache. teks apa-apa-berbeza-di sini-akan-buat-tugas. just-needs-to-be-different-each-time

Cara umum sama ada untuk menggunakan nombor rawak, untuk menggunakan masa semasa dalam milisaat, atau gabungan kedua-duanya. sekarang

; var xhttp = XMLHttpRequest baru

; var data = xhttp. buka ("GET", "data. txt? dummy = "+ ms, false);

Cara yang betul adalah mengubah konfigurasi Apache (melalui htaccess atau conf file) dengan tajuk yang tamat tempoh dengan masa caching yang sangat rendah. Semak semula jika anda mempunyai akses kepada. fail htaccess jika tidak fail conf Apache.

Walau bagaimanapun, jika anda benar-benar tidak dapat mengubahnya. htaccess atau Apache conf, mungkin terdapat trik untuk mencapainya. Kebanyakan pemaju menggunakan helah ini untuk memperbaharui cache penyemak imbas setiap kali mereka membuat beberapa perubahan pada fail yang cache pada masa yang lebih lama dalam cache penyemak imbas tetapi helah ini juga boleh digunakan dalam kes anda.

Caranya ialah versi yang ditambahkan pada nama fail. e. g. data. txt? v = 1 untuk membersihkan cache penyemak imbas. Dalam kes anda, anda boleh menggunakan nombor rawak sebagai nombor versi supaya penyemak imbas memperbaharui fail pada setiap panggilan. Walau bagaimanapun, jika nombor rawak diulangi pengguna akan melihat fail lama lagi. Anda boleh menggunakan Matematik.

  var data = xhttp. buka ("GET", "data. txt? v = 0. 2544544383 ", palsu); 

Awas: Ini hanya silap mata dan bukan cara yang betul. Ia hanya mengurangkan kebarangkalian memuat semula fail cache ke nombor yang sangat kecil tetapi tidak menjamin bahawa fail cache tidak akan diambil.

Anda harus memeriksa apakah tempoh masa caching. fail txt dalam penyemak imbas. Sekiranya ia sangat besar (katakan 1 bulan), anda tidak boleh menggunakan teknik ini tetapi jika ia lebih rendah (katakan 1 jam), anda boleh menggunakan teknik ini sebagai kebarangkalian nombor rawak yang sama yang dijana untuk pengguna yang sama akan meningkat lebih rendah.