Кеш кальмарів - частина 2

Squid - це не тільки служба проксі-сервісу та кеш-пам’яті, вона може зробити набагато більше: керувати acl (списками доступу), фільтрувати вміст, вона навіть може виконувати фільтрацію ssl навіть у прозорому режимі (метод проксі-сервера - без необхідності налаштовувати параметри проксі-сервера з ваших браузерів , це як людина посередині, ніхто не знає, що вона там). Тому я зазвичай бачу, як витрачається весь потенціал цієї програми, не знаючи, як налаштувати кожну з її частин.

Зараз найцікавіше, що робить кальмар, - це кеш (на мій погляд). Ви скажете мені, чому кешувати? Причина проста, краще керувати використанням своєї швидкості та пропускної здатності - головне. Подумайте добре, 1000 людей у ​​вашій компанії консультують кожні 5 хвилин, загальні сторінки, Google, Hotmail, Gmail тощо ... так що ви збираєтеся завантажувати зображення, банери, рекламу, HTML-вміст знову і знову, все це статично речі, але вони не змінюються так часто, краще, щоб вони зберігались у вашій локальній мережі, і ви доставляли копію, яку ви вважаєте недавною, у конфігураціях, які ви розглядали.

Як це зробити? Просто з таким реченням:

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

Як я завжди кажу, не вірте всьому, тому я закликаю вас читати офіційне джерело. Рекомендую ознайомитися з інструкцією до цього рішення ТУТ.

Оператор refresh_pattern завжди буде нашим тегом для додавання нових параметрів до кешу.

Важливо, що ваші списки кеш-пам’яті мають бути послідовними, оскільки, як тільки він збігається з першим, який відповідає об’єкту, він не буде продовжувати читати інші ваші правила.

Регулярні вирази чутливі до регістру, тому flv — це не те саме, що FLV, але ви можете уникнути цього, якщо хочете, використовуючи опцію -i . Тоді це виглядатиме так: refresh_pattern -i

«Хв»: Це час (у хвилинах), протягом якого об’єкт вважатиметься «свіжим», якщо він не має явного тегу «минув термін дії». За замовчуванням Squid рекомендує 0, оскільки деякі динамічні програми можуть поводитися дивно. Це значення має бути числом, яке ви вважаєте корисним та ефективним для елементів, які ви хочете кешувати. Наприклад, 1440 хвилин (один день) мені здається прийнятним для JPG; це не те саме, що зображення в публікації на вебсайті змінюються кожні 5 хвилин.

«Відсоток» – це відсоток віку об’єкта (з моменту останньої модифікації), який вважатиметься «недавнім» або «свіжим». Наприклад, якщо ви постійно перезавантажуєте або оновлюєте веб-сторінку, щоб побачити останні модифікації, Squid може вважати, що якщо об’єкт досяг, скажімо, 50% часу між мінімальним і максимальним значеннями , він знову завантажить цей об’єкт з Інтернету та надасть вам нову копію.

«Максимум» – це ліміт часу, що дорівнює або перевищує «Мін», протягом якого об’єкт вважається «недавнім». Припустимо, що зображення на сторінці було переглянуте користувачем лише один раз; цей об’єкт вже досяг мінімального часу , але не максимального часу . Тому, коли його переглядатимуть знову, буде доставлено кешовану копію.

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

Ці варіанти були зроблені здебільшого для ігнорування попередньо встановленої поведінки в мовах та протоколах, щоб гарантувати ефективне використання кеш-пам’яті.

override-expire

Він забезпечує мінімальний час об'єкта, навіть якщо сервер надсилає коротший час закінчення терміну дії (наприклад, такі як заголовок або Кеш-контроль: max-age). Якщо ми зробимо це, з’явиться "попередження", в якому говориться про подібні речі "ПОРУШУЄ стандарт HTTP", але це лише попередження, які ми можемо ігнорувати. Тепер, якщо час, який сервер надсилає, довший, тоді кальмар займе час сервера (закінчення)

override-lastmod

Посилює мінімальний час роботи елемента, навіть якщо цей елемент нещодавно був змінений.

reload-into-ims

Коротке пояснення полягає в тому, що це запобігає тому, що коли ми натискаємо кнопку оновлення або робимо запит без кешу, squid доставить кеш, якщо він не був "змінений з" та / або якщо на сторінці немає "заголовків".

ignore-reload

Ігноруйте дії користувачів, натискаючи кнопку перезавантаження або оновлення сторінки

ignore-no-store

Ігноруйте будь-яке правило в заголовках, щоб не кешувати, наприклад відео

ignore-private

Ігноруйте будь-які правила в заголовках приватного вмісту, які не слід кешувати, приклад: вміст facebook.

refresh-ims

Squid зв’язується з сервером, щоб переконатися, що об’єкт найновіший. Якщо це так, він доставить кеш

store-stale

Кальмар збереже всі ці відповіді, навіть якщо у них немає терміну придатності, це дуже недоцільно, оскільки їх, як правило, не можна використовувати повторно. Якщо ви вирішите його увімкнути, ви повинні оголосити max-stale = NN

max-stale=NN

Якщо ви увімкнули вищезазначене, ви повинні вказати максимальний термін служби для цієї відповіді чи фактора. Кальмар не доставляє об'єкти цього стилю, але може перевірити його з джерелом

Ось таблиця того, як працює стан "СВІЖИЙ" відповідно до обговорених нами значень:

  • СВІЖИЙ, якщо термін дії закінчується> зараз, ще STALE
  • ПРОДАЖ, якщо вік> макс
  • СВІЖИЙ, якщо lm-коефіцієнт <відсоток, інакше STALE
  • СВІЖЕ, якщо вік <хв інше КРАДИТИ

Ось приклад конфігурації для конкретної компанії з великим дисковим простором, хорошим обладнанням і хорошою пропускною здатністю

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

Тепер кешування відбувається не лише на жорсткому диску; ми також можемо кешувати в оперативній пам'яті. Це значення залежить від процесу Squid, тому його слід враховувати під час використання перенаправників, таких як SquidGuard.

maximum_object_size_in_memory 1024 KB

Максимальний розмір об'єкта в пам'яті, який кальмар буде зберігати в оперативній пам'яті. Ви також можете задекларувати мінімум.


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

Як бачите, одне - це політика заміни кеш-пам'яті в оперативній пам'яті, а інше - на жорсткому диску. Існує 2 правила GDSF та LFUDA. Перший прагне покращити відсоток звернень кешу, маючи під рукою багато дрібних об’єктів, другий - навпаки, зберігає об’єкти в кеш-пам’яті незалежно від їх розміру.

Питання, яке, на мою думку, ви задаєте мені в цей момент, полягає в тому, яку користь я використовую? Ну, якщо ви вважаєте, що у вашому оточенні вони роблять багато запитів і мало завантажень використовують GDSF, якщо навпаки вони роблять багато завантажень і декілька запитів LFUDA. Якщо я рекомендую LFUDA, коли ви збираєтеся робити, я не знаю, кешувати на 1 ТБ диска, це ефективніше.

maximum_object_size 4 MB

Максимальний розмір, який може зберігатись об’єктом

cache_dir aufs /media/proxy249/cache 100 16 256

Де буде зберігатися кеш, тут увага, важливо, якщо ви використовуєте ufs, aufs або diskd, всі 3 працюють більш-менш однаково, різниця полягає в тому, що aufs і diskd працюють з окремими процесами для виконання операцій вводу-виводу на жорсткого диска та уникайте, щоб процеси кальмарів зависали під час цих операцій, додатково на diskd ви можете вказати кількість потоків, які ви будете мати для цього завдання. Я рекомендую aufs, якщо у вас хороша команда.

Розмір 100 (мега), ви можете поставити 100000, це майже 100 ГБ, залежить від вашої доступності. 16 - це кількість папок, а 256 - кількість підпапок. Ви можете грати з обома значеннями, це залежить від того, наскільки швидкі ваші диски та скільки у вас ресурсів.


cache_swap_low 90
cache_swap_high 95

Ці параметри є значеннями заміни об’єкта, це мінімальне та максимальне значення як водяний знак відповідно до кальмара, де ці цифри знаходяться у відсотках (%), а в дуже маленькому кеші 5%, як це зараз, буде, скажімо, 300 об'єктів в секунду, але в дуже великих кешах ми говоримо про тисячі МБ

Ну, наразі все. Коментуйте, а також візьміть до уваги тих, хто казав мені, що не може кешувати та фільтрувати сторінки HTTPS (SSL) у Squid 3.5 або вище; я скоро вам про це розповім, тож слідкуйте за оновленнями цього блогу.


Додати як пріоритетне джерело в Google