Cache sotong - bahagian 2

Squid bukan hanya perkhidmatan proksi dan cache, tetapi boleh melakukan lebih banyak lagi: menguruskan acl (senarai akses), menyaring kandungan, bahkan dapat melakukan ssl penyaringan walaupun dalam mod telus (kaedah proksi - tanpa perlu mengkonfigurasi dalam tetapan proksi dari penyemak imbas mereka , seperti lelaki di tengah, tidak ada yang tahu ia ada di sana). Oleh itu, saya biasanya melihat bagaimana potensi penuh aplikasi ini disia-siakan dengan tidak mengetahui bagaimana mengkonfigurasi setiap bahagiannya.

Sekarang perkara menarik yang dilakukan oleh sotong adalah cache (pada pendapat saya). Anda akan memberitahu saya mengapa cache? Sebabnya mudah, menguruskan penggunaan kelajuan dan lebar jalur anda dengan lebih baik. Fikirkan dengan teliti, 1000 orang di syarikat anda berunding setiap 5 minit, halaman biasa, Google, Hotmail, Gmail, dan lain-lain ... supaya anda akan memuat turun gambar, sepanduk, iklan, kandungan html berulang-ulang kali, semuanya statik perkara, tidak Mereka berubah dengan kerap, lebih baik menyimpannya di rangkaian tempatan anda dan anda memberikan salinan yang anda anggap baru-baru ini dalam konfigurasi yang anda fikirkan.

Bagaimana cara melakukannya? Ringkas dengan ayat berikut:

refresh_pattern [-i] regex min percent max [options]

Seperti yang selalu saya katakan, jangan percaya semua perkara, jadi saya galakkan anda membaca dari sumber rasmi. Saya cadangkan membaca manual untuk keputusan ini DI SINI.

Pernyataan refresh_pattern akan sentiasa menjadi tag kami untuk menambah parameter baharu pada cache.

Yang penting, senarai cache anda mestilah berurutan, kerana setelah ia sesuai dengan yang pertama yang sesuai dengan objek, tidak akan terus membaca peraturan anda yang lain

Ungkapan biasa sensitif huruf besar/kecil, jadi flv tidak sama dengan FLV, tetapi anda boleh mengelakkannya jika anda mahu dengan menggunakan pilihan -i . Maka ia akan kelihatan seperti ini: refresh_pattern -i

'Min': Ini adalah masa (dalam minit) sesuatu objek akan dianggap "segar" jika ia tidak mempunyai tag "tamat tempoh" yang eksplisit. Secara lalai, Squid mengesyorkan 0, kerana sesetengah aplikasi dinamik mungkin bertindak pelik. Nilai ini sepatutnya nombor yang anda anggap berguna dan berkesan untuk elemen yang anda ingin simpan dalam cache. Contohnya, 1440 minit (satu hari) nampaknya baik bagi saya untuk JPG; ia tidak seperti imej dalam siaran di laman web berubah setiap 5 minit.

'Peratus' ialah peratusan umur objek (sejak pengubahsuaian terakhir) yang akan dianggap "terkini" atau "segar". Contohnya, jika anda sentiasa memuat semula atau menyegarkan halaman web untuk melihat pengubahsuaian terkini, Squid mungkin mempertimbangkan bahawa jika objek tersebut telah mencapai, katakan, 50% daripada masa antara nilai minimum dan maksimum , ia akan memuat turun objek tersebut dari internet sekali lagi dan memberikan anda salinan baharu.

'Maks' ialah had di atas atau sama dengan 'Min' untuk tempoh objek dianggap "terkini atau segar". Katakan imej pada halaman hanya dilihat sekali oleh pengguna; objek tersebut telah mencapai masa minnya , tetapi bukan masa maksimum . Jadi, apabila ia dilihat semula, salinan yang disimpan dalam cache akan dihantar.

Options:
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-store
ignore-private
max-stale=NN
refresh-ims
store-stale

Pilihan ini dibuat kebanyakannya untuk mengabaikan tingkah laku yang telah ditetapkan dalam bahasa dan protokol, untuk menjamin penggunaan cache yang berkesan.

override-expire

Ia memaksakan masa minimum objek, walaupun pelayan menghantar masa tamat yang lebih pendek (contohnya seperti tajuk atau Cache-Control: max-age). Sekiranya kita melakukan ini, "amaran" akan muncul yang mengatakan perkara seperti ini "MENGHILANGKAN standard HTTP" tetapi itu hanya amaran yang boleh kita abaikan. Sekarang jika masa yang dihantar pelayan lebih lama maka sotong akan mengambil masa pelayan (tamat)

override-lastmod

Menguatkan masa minimum item, walaupun item tersebut baru diubah.

reload-into-ims

Penjelasan ringkasnya adalah bahawa ia mencegah bahawa ketika kita menekan butang refresh atau membuat permintaan tanpa cache, squid akan memberikan cache jika belum "diubah sejak" dan / atau jika tidak ada "header" di halaman.

ignore-reload

Abaikan tindakan pengguna menekan butang muat semula atau muat semula halaman

ignore-no-store

Abaikan peraturan dalam tajuk untuk tidak menyimpan cache, misalnya video

ignore-private

Abaikan peraturan dalam tajuk kandungan peribadi yang tidak boleh disimpan dalam cache, contoh: kandungan facebook.

refresh-ims

Squid menghubungi pelayan, untuk memastikan sama ada objek itu yang terbaru. Sekiranya ada maka ia akan memberikan cache

store-stale

Sotong akan menyimpan semua tindak balas tersebut, walaupun mereka tidak mempunyai tarikh luput, ini sangat tidak praktikal kerana biasanya tidak dapat digunakan kembali. Sekiranya anda memutuskan untuk mengaktifkannya, anda mesti menyatakan max-stale = NN

max-stale=NN

Sekiranya anda mengaktifkan perkara di atas, anda mesti menyatakan jangka hayat maksimum untuk tindak balas atau faktor tersebut. Sotong tidak menyampaikan objek gaya ini tetapi dapat mengesahkannya dengan sumbernya

Berikut adalah jadual bagaimana keadaan "FRESH" segar berfungsi mengikut nilai-nilai yang telah kita bincangkan:

  • FRESH jika tamat> sekarang, lain-lain STALE
  • JUALAN jika umur> maks
  • FRESH jika lm-factor <peratus, yang lain JUALAN
  • SEGAR jika umur <min yang lain JUALAN

Berikut adalah contoh konfigurasi untuk syarikat tertentu dengan banyak ruang cakera, peralatan yang baik dan lebar jalur yang baik

refresh_pattern -i \.(3gp|7z|ace|asx|bin|deb|divx|dvr-ms|ram|rpm|exe|inc|cab|qt)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(rar|jar|gz|tgz|bz2|iso|m1v|m2(v|p)|mo(d|v)|arj|lha|lzh|zip|tar)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(jp(e?g|e|2)|gif|pn[pg]|bm?|tiff?|ico|swf|dat|ad|txt|dll)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(avi|ac4|mp(e?g|a|e|1|2|3|4)|mk(a|v)|ms(i|u|p)|og(x|v|a|g)|rm|r(a|p)m|snd|vob)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims

refresh_pattern -i \.(pp(t?x)|s|t)|pdf|rtf|wax|wm(a|v)|wmx|wpl|cb(r|z|t)|xl(s?x)|do(c?x)|flv|x-flv)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
cache_mem 8092 MB

Kini penyimpanan cache bukan sahaja pada cakera keras; kita juga boleh menyimpan cache dalam RAM. Nilai ini adalah untuk setiap proses Squid, jadi anda harus mengambil kiranya apabila menggunakan pengalihan seperti SquidGuard.

maximum_object_size_in_memory 1024 KB

Ukuran maksimum objek dalam memori yang akan disimpan cumi dalam RAM. Anda juga boleh menyatakan minimum.


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

Seperti yang anda lihat, satu adalah dasar untuk penggantian cache dalam memori RAM dan yang lain dalam cakera keras. Terdapat 2 polisi GDSF dan LFUDA. Yang pertama bertujuan untuk meningkatkan peratusan cache, dengan banyak objek kecil di tangan, yang kedua mencari sebaliknya, ia menyimpan objek di dalam cache tanpa mengira saiznya.

Soalan yang saya bayangkan anda tanyakan pada saya ketika ini adalah, apa gunanya saya gunakan? Nah, jika anda menganggap bahawa di persekitaran anda, mereka banyak bertanya dan beberapa muat turun menggunakan GDSF jika sebaliknya mereka banyak memuat turun dan beberapa pertanyaan LFUDA. Sekiranya saya mengesyorkan LFUDA semasa anda akan melakukannya, saya tidak tahu, cache dalam 1TB cakera, ia lebih berkesan.

maximum_object_size 4 MB

Ukuran maksimum yang boleh disimpan oleh objek

cache_dir aufs /media/proxy249/cache 100 16 256

Di mana cache akan disimpan, perhatian di sini, yang penting adalah jika anda menggunakan ufs, aufs atau diskd, ketiga-tiganya berfungsi lebih kurang sama, perbezaannya ialah aufs dan diskd berfungsi dengan proses yang berasingan untuk melakukan operasi I / O pada hard disk dan elakkan proses sotong menggantung selama operasi ini, selain itu diskd anda dapat menentukan bilangan utas yang akan anda miliki untuk tugas ini. Saya mengesyorkan aufs jika anda mempunyai pasukan yang bagus.

Ukuran 100 (megabait), anda boleh meletakkan 100000 hampir 100GB bergantung pada ketersediaan anda. 16 adalah bilangan folder, dan 256 adalah bilangan sub-folder. Anda boleh bermain dengan kedua-dua nilai bergantung pada seberapa pantas cakera anda dan berapa banyak sumber yang anda ada.


cache_swap_low 90
cache_swap_high 95

Pilihan ini adalah nilai penggantian objek, itu adalah nilai minimum dan maksimum sebagai tanda air mengikut sotong, di mana angka-angka ini dalam bentuk peratusan (%), dan dalam cache yang sangat kecil, 5% seperti ini sekarang boleh dikatakan 300 objek sesaat , tetapi dalam cache yang sangat besar kita akan bercakap mengenai ribuan MB

Baiklah, itu sahaja buat masa ini. Komen, dan pertimbangkan juga mereka yang memberitahu saya bahawa mereka tidak boleh menyimpan dan menapis halaman HTTPS (SSL) dalam Squid 3.5 atau lebih tinggi; saya akan kongsikannya tidak lama lagi, jadi nantikan blog ini.


Tambahkan sebagai sumber pilihan dalam Google