מטמון קלמארי - חלק 2

קלמארי הוא לא רק שירות proxy ומטמון, הוא יכול לעשות הרבה יותר: לנהל acl (רשימות גישה), לסנן תוכן, הוא יכול אפילו לבצע סינון ssl גם במצב שקוף (שיטת proxy - מבלי שתצטרך להגדיר בהגדרות ה- proxy. מהדפדפנים שלהם, זה כמו גבר באמצע, אף אחד לא יודע שזה שם). לכן אני בדרך כלל רואה כיצד הפוטנציאל המלא של יישום זה מבוזבז על ידי כך שאני לא יודע כיצד להגדיר כל אחד מחלקיו.

עכשיו הדבר המעניין שדיונון עושה הוא המטמון (לדעתי). אתה תגיד לי, למה לשמור מטמון? הסיבה היא פשוטה, לנהל טוב יותר את השימוש במהירות שלך ורוחב הפס הוא העיקר. תחשוב היטב, 1000 אנשים בחברה שלך מתייעצים כל 5 דקות, דפים משותפים, גוגל, 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

ההסבר הקצר הוא שהוא מונע שכשאנחנו לוחצים על כפתור הרענון או מגישים בקשה ללא מטמון, דיונון יעביר מטמון אם הוא לא "שונה מאז" ו / או אם אין "כותרות" בדף.

ignore-reload

התעלם מפעולת המשתמשים ללחוץ על כפתור העמוד מחדש או לרענן

ignore-no-store

התעלם מכל כלל בכותרות שלא למטמון, למשל לסרטונים

ignore-private

התעלם מכל כלל בכותרות תוכן פרטיות שאסור לשמור במטמון, לדוגמא: תוכן בפייסבוק.

refresh-ims

קלמארי יוצר קשר עם השרת כדי להבטיח אם האובייקט הוא החדש ביותר. אם זה יהיה אז זה יספק מטמון

store-stale

קלמארי ישמור את כל התגובות הללו, גם אם אין להן תאריך תפוגה, זה מאוד לא מעשי מכיוון שלרוב לא ניתן לעשות בהן שימוש חוזר. אם תחליט לאפשר זאת עליך להכריז על max-stale = NN

max-stale=NN

אם הפעלת את האמור לעיל, עליך להכריז על אורך חיים מקסימלי עבור תגובה או גורם זה. קלמארי אינו מספק אובייקטים בסגנון זה אך יכול לאמת זאת עם המקור

להלן טבלה כיצד המצב של "FRESH" טרי עובד על פי הערכים עליהם דנו:

  • טרי אם יפוג> עכשיו, אחרת STALE
  • STALE אם גיל> מקסימום
  • טרי אם lm- גורם <אחוז, אחרת STALE
  • טרי אם גיל <דקה אחר 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

כעת, אחסון במטמון אינו רק בכונן הקשיח; אנו יכולים גם לשמור במטמון ב-RAM. ערך זה הוא לכל תהליך Squid, לכן כדאי לקחת זאת בחשבון בעת ​​שימוש בנתבים מחדש כמו SquidGuard.

maximum_object_size_in_memory 1024 KB

הגודל המרבי של האובייקט בזיכרון שדיונון יאחסן ב- RAM. אתה יכול גם להכריז על מינימום.


memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF

כפי שאתה יכול לראות, האחת היא המדיניות להחלפת מטמון בזיכרון זיכרון RAM ואחרת בדיסק הקשיח. ישנן שתי מדיניות GDSF ו- LFUDA. הראשון מבקש לשפר את אחוז כניסות המטמון, שיש הרבה אובייקטים קטנים בהישג יד, השני מחפש את ההפך, זה שומר אובייקטים במטמון ללא קשר לגודל שלהם.

השאלה שאני מדמיין שאתה שואל אותי כרגע היא, באיזה שימוש אני משתמש? ובכן, אם אתה מחשיב שבסביבתך הם עושים שאילתות רבות ומעט הורדות משתמשות ב- GDSF אם להפך הם עושים הורדות רבות ומעט שאילתות LFUDA . שאם אני ממליץ על LFUDA כשאתה הולך לעשות, אני לא יודע, לשמור מטמון בדיסק 1TB, זה יעיל יותר.

maximum_object_size 4 MB

ניתן לאחסן את הגודל המרבי שאובייקט יכול להיות

cache_dir aufs /media/proxy249/cache 100 16 256

היכן שהמטמון יאוחסן, תשומת לב כאן, חשוב אם אתה משתמש ב- ufs, aufs או diskd, כל 3 עובדים זהים פחות או יותר, ההבדל הוא ש- aufs ו- diskd עובדים עם תהליכים נפרדים כדי לבצע פעולות קלט / פלט על הקשיח. דיסק והימנע שתהליכי דיונון נתקעים במהלך פעולות אלה, בנוסף diskd אתה יכול לציין את מספר האשכולות שיהיה לך למשימה זו. אני ממליץ על aufs אם יש לך צוות טוב.

גודל 100 (מגה-בייט), אתה יכול לשים 100000 הוא כמעט 100GB תלוי בזמינות שלך. 16 הוא מספר התיקיות, ו- 256 הוא מספר תיקיות המשנה. אתה יכול לשחק עם שני הערכים תלוי כמה מהר הדיסקים שלך וכמה משאבים יש לך.


cache_swap_low 90
cache_swap_high 95

אפשרויות אלה הן ערכי החלפת האובייקט, זהו הערך המינימלי והמקסימלי כסימן מים לפי דיונון, כאשר המספרים הללו נמצאים באחוזים (%), ובמטמון קטן מאוד, 5% כאלה כרגע יהיו נניח 300 אובייקטים בשנייה, אך במטמונים גדולים מאוד היינו מדברים על אלפי מגה בייט

ובכן, זה הכל להיום. כתבו תגובה, וגם קחו בחשבון את אלה שאמרו לי שהם לא יכולים לשמור ולסנן דפי HTTPS (SSL) במטמון ב-Squid 3.5 ומעלה; אביא לכם את זה בקרוב, אז הישארו מעודכנים בבלוג הזה.


הוסף כמקור מועדף בגוגל