Squid không chỉ là một dịch vụ proxy và bộ nhớ cache, nó có thể làm được nhiều hơn thế: quản lý acl (danh sách truy cập), lọc nội dung, thậm chí nó có thể thực hiện lọc ssl ngay cả trong chế độ trong suốt (phương pháp proxy - mà không cần phải cấu hình trong cài đặt proxy từ trình duyệt của họ, nó giống như người đàn ông ở giữa, không ai biết nó ở đó). Vì vậy, tôi thường thấy tiềm năng đầy đủ của ứng dụng này bị lãng phí như thế nào do không biết cách cấu hình từng bộ phận của nó.
Bây giờ điều thú vị mà con mực làm là bộ nhớ cache (theo ý kiến của tôi). Bạn sẽ cho tôi biết tại sao lại sử dụng bộ nhớ cache? Lý do rất đơn giản, quản lý tốt hơn việc sử dụng tốc độ và băng thông của bạn là điều chính. Hãy suy nghĩ kỹ, cứ 1000 phút lại có 5 người trong công ty của bạn tư vấn, các trang thông dụng, Google, Hotmail, Gmail, v.v ... để bạn tải đi tải lại hình ảnh, banner, quảng cáo, nội dung html, tất cả đều là những thứ tĩnh, không chúng thay đổi rất thường xuyên, tốt hơn nên lưu trữ chúng trong mạng cục bộ của bạn và bạn cung cấp một bản sao mà bạn cho là gần đây trong các cấu hình mà bạn đã cân nhắc.
Làm thế nào để làm điều đó? Đơn giản với câu sau:
refresh_pattern [-i] regex min percent max [options]
Như tôi luôn nói, đừng tin vào mọi thứ, vì vậy tôi mời bạn đọc từ nguồn chính thức. Tôi khuyên bạn nên đọc hướng dẫn sử dụng cho câu này ĐÂY
Kết án refresh_potype Nó sẽ luôn là nhãn của chúng tôi để thêm các tham số mới vào bộ nhớ cache.
Quan trọng, danh sách bộ nhớ cache của bạn phải tuần tự, vì một khi nó khớp với danh sách đầu tiên khớp với đối tượng, nó sẽ không tiếp tục đọc các quy tắc khác của bạn
Biểu thức chính quy phân biệt chữ hoa chữ thường, do đó flv không giống như FLV, nhưng bạn có thể tránh điều này nếu muốn bằng cách sử dụng tùy chọn -i . Sau đó, nó sẽ giống như thế này refresh_potype -i
'Tối thiểu': Đó là thời gian (phút) trong đó một đối tượng sẽ được coi là "gần đây hoặc mới" và nếu nó không có nhãn rõ ràng là "đã hết hạn". Theo mặc định, mực khuyến nghị rằng nó là 0, vì lý do một số ứng dụng động có thể hoạt động lạ, blah blah blah, thực sự giá trị này phải là một con số mà bạn cho là hữu ích và hiệu quả đối với các phần tử bạn muốn lưu vào bộ nhớ cache, Ví dụ: jpg, 1440 phút (một ngày) đối với tôi có vẻ ổn, sẽ không giống như nếu hình ảnh của một bài đăng thay đổi cứ sau 5 phút trên một trang.
'Phần trăm' Đó là phần trăm tuổi của một đối tượng (kể từ lần sửa đổi cuối cùng) sẽ được coi là «gần đây hoặc mới». Hãy để tôi giải thích, có thể thực hiện tải lại hoặc làm mới liên tục để xem các sửa đổi cuối cùng được thực hiện cho một trang web, mực có thể xem xét nếu nó đã có, chẳng hạn như 50% thời gian hoàn thành giữa phút y tối đa, tải xuống lại đối tượng đó từ internet và cung cấp cho bạn một bản sao mới.
'Tối đa' là giới hạn trên hoặc bằng 'Min' một đối tượng được coi là «gần đây hoặc mới» trong bao lâu, giả sử rằng một hình ảnh của trang nào đó chỉ được người dùng tham khảo một lần, đối tượng đó đã đạt đến thời điểm của nó phút, nhưng không phải tối đa, sau đó khi nó được truy vấn lại, một bản sao bộ đệm sẽ được gửi.
Options:
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-store
ignore-private
max-stale=NN
refresh-ims
store-stale
Các tùy chọn này được thực hiện chủ yếu để bỏ qua các hành vi được thiết lập trước trong các ngôn ngữ và giao thức, nhằm đảm bảo việc sử dụng bộ nhớ đệm hiệu quả.
override-expire
Nó thực thi thời gian tối thiểu của một đối tượng, ngay cả khi máy chủ đã gửi thời gian hết hạn ngắn hơn (ví dụ như những thứ như tiêu đề hoặc Cache-Control: max-age). Nếu chúng tôi làm điều này, một "cảnh báo" sẽ xuất hiện với nội dung như sau "VI PHẠM tiêu chuẩn HTTP" nhưng đó chỉ là những cảnh báo mà chúng tôi có thể bỏ qua. Bây giờ nếu thời gian máy chủ gửi lâu hơn thì mực sẽ chiếm thời gian (hết hạn) của máy chủ
override-lastmod
Củng cố thời gian tối thiểu của một mặt hàng, ngay cả khi mặt hàng đó đã được sửa đổi gần đây.
reload-into-ims
Lời giải thích ngắn gọn là nó ngăn chặn việc khi chúng tôi nhấn nút làm mới hoặc thực hiện yêu cầu không có bộ nhớ cache, mực sẽ cung cấp bộ nhớ cache nếu nó chưa được "sửa đổi kể từ" và / hoặc nếu không có "tiêu đề" trên trang.
ignore-reload
Bỏ qua hành động của người dùng để nhấn nút tải lại hoặc làm mới trang
ignore-no-store
Bỏ qua bất kỳ quy tắc nào trong tiêu đề không lưu vào bộ nhớ cache, ví dụ: video
ignore-private
Bỏ qua bất kỳ quy tắc nào trong tiêu đề nội dung riêng tư không nên lưu vào bộ nhớ đệm, ví dụ: nội dung facebook.
refresh-ims
Squid liên hệ với máy chủ để đảm bảo xem đối tượng có phải là đối tượng mới nhất hay không. Nếu đúng thì nó sẽ cung cấp bộ nhớ cache
store-stale
Squid sẽ lưu tất cả các câu trả lời đó, ngay cả khi chúng không có ngày hết hạn, điều này rất không thực tế vì chúng thường không thể được sử dụng lại. Nếu bạn quyết định bật nó, bạn phải khai báo max-stale = NN
max-stale=NN
Nếu bạn đã bật tùy chọn trên, bạn phải khai báo thời gian tồn tại tối đa cho phản hồi hoặc yếu tố đó. Squid không cung cấp các đối tượng kiểu này nhưng có thể xác thực nó bằng nguồn
Dưới đây là bảng về cách trạng thái "TƯƠI" hoạt động theo các giá trị mà chúng ta đã thảo luận:
- TƯƠI nếu hết hạn> bây giờ, khác BÁN
- BÁN nếu tuổi> tối đa
- TƯƠI nếu lm-factor <phần trăm, nếu không thì BÁN
- TƯƠI nếu tuổi <phút khác BÁN
Đây là một cấu hình ví dụ cho một công ty cụ thể có nhiều dung lượng đĩa, thiết bị tốt và băng thông tốt
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
Bây giờ bộ nhớ đệm không chỉ nằm trên đĩa cứng, chúng ta có thể lưu bộ nhớ đệm vào bộ nhớ ram, giá trị này là cho mỗi quá trình mực, vì vậy bạn phải cân nhắc khi sử dụng các bộ chuyển hướng như con mực
maximum_object_size_in_memory 1024 KB
Kích thước tối đa của đối tượng trong bộ nhớ mà mực sẽ lưu trong RAM. Bạn cũng có thể khai báo mức tối thiểu.
memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF
Như bạn có thể thấy, một là chính sách thay thế bộ nhớ đệm trong bộ nhớ RAM và một chính sách khác trong đĩa cứng. Có 2 chính sách GDSF và LFUDA. Cách đầu tiên tìm cách cải thiện tỷ lệ truy cập bộ nhớ cache, có nhiều đối tượng nhỏ trong tay, lần thứ hai tìm cách ngược lại, nó giữ các đối tượng trong bộ nhớ cache bất kể kích thước của chúng.
Câu hỏi mà tôi tưởng tượng bạn đang hỏi tôi lúc này là tôi sử dụng công dụng gì? Chà, nếu bạn cho rằng trong môi trường của bạn, họ thực hiện nhiều truy vấn và ít tải xuống sử dụng GDSF nếu ngược lại, họ tải nhiều và ít truy vấn LFUDA. Đó là nếu tôi đề xuất LFUDA khi bạn định làm, tôi không biết, bộ nhớ cache trong 1TB đĩa, nó hiệu quả hơn.
maximum_object_size 4 MB
Kích thước tối đa mà một đối tượng có thể được lưu trữ
cache_dir aufs /media/proxy249/cache 100 16 256
Bộ nhớ đệm sẽ được lưu ở đâu, chú ý ở đây, quan trọng là nếu bạn sử dụng ufs, aufs hay diskd thì cả 3 đều hoạt động ít nhiều như nhau, điểm khác biệt là aufs và diskd hoạt động với các quy trình riêng biệt để thực hiện các hoạt động I / O trên đĩa cứng và tránh rằng các quy trình mực bị treo trong các hoạt động này, ngoài ra diskd bạn có thể chỉ định số luồng mà bạn sẽ có cho tác vụ này. Tôi giới thiệu aufs nếu bạn có một đội tốt.
Kích thước 100 (megabyte), bạn có thể đặt 100000 là gần 100GB tùy thuộc vào khả năng của bạn. 16 là số thư mục và 256 là số thư mục con. Bạn có thể chơi với cả hai giá trị tùy thuộc vào tốc độ đĩa của bạn và lượng tài nguyên bạn có.
cache_swap_low 90
cache_swap_high 95
Các tùy chọn này là các giá trị thay thế đối tượng, nó là giá trị tối thiểu và tối đa dưới dạng hình mờ theo mực, trong đó các số này tính bằng phần trăm (%) và trong một bộ nhớ đệm rất nhỏ, 5% như thế này ngay bây giờ, giả sử 300 đối tượng mỗi giây , nhưng trong bộ nhớ đệm rất lớn, chúng ta sẽ nói về hàng nghìn MB
Thôi, tôi để lại cho bạn, cái này bây giờ, bình luận và cũng lưu ý đến những người đã nói với tôi rằng họ không thể lưu vào bộ nhớ cache và lọc các trang https (SSL) ở mực 3.5 trở lên, tôi sẽ sớm đưa chúng đến với bạn, hãy theo dõi blog này.
11 bình luận, để lại của bạn
Bổ sung tuyệt vời cho phần đầu tiên!
Có rất nhiều tài liệu về Squid về nó, nhưng không phải lúc nào bạn cũng có thể tìm ra được những lựa chọn thiết thực nhất với những giải thích tương ứng và các kịch bản sử dụng thực tế có thể xảy ra!
Như mọi khi, tôi mong chờ phần thứ ba của nó!
Cám ơn bạn đã góp ý. Nó là chính xác, một lời giải thích ngắn gọn về tất cả các yếu tố liên quan và một thiết lập phương pháp hay nhất. Tuy nhiên, tôi luôn chú ý đến những nhận xét và kinh nghiệm riêng của bạn.
Xin chào, tôi gặp sự cố với các bản cập nhật windows và phần mềm chống vi-rút. Tôi có khoảng 120 máy tính tại cơ sở của mình. Bạn có thể cho tôi một ý tưởng về cách cải thiện tình hình này. Cảm ơn sự giúp đỡ của bạn và xin chúc mừng về bài viết.
Xin chào, cảm ơn bạn đã tham gia .. tốt nếu tôi có thể giúp bạn, nhưng giải thích rõ vấn đề của bạn là gì, bạn không thể tải xuống các bản cập nhật? Bạn đã đặt proxy trong các tùy chọn Internet và tương tự trong các tùy chọn proxy của trình duyệt? Bạn đã kiểm tra các cổng chưa? Hay bạn muốn lưu vào bộ nhớ cache các bản cập nhật này?
Điều tôi cần là mỗi khi máy tính tải xuống windows hoặc bản cập nhật chống vi-rút, nó sẽ nằm trong bộ nhớ cache trong khoảng thời gian khoảng một tháng, theo cách này tôi muốn tiết kiệm băng thông, kể từ mỗi buổi sáng. tất cả các máy tính bắt đầu tải xuống các bản cập nhật giống nhau và kết nối đã bão hòa.
Cảm ơn bạn đã giúp đỡ.
Một máy chủ với Squid hoạt động, vì chúng là những bản tải xuống http không được mã hóa đơn giản. Các giải pháp khác cho bộ nhớ cache là WSUS và Altiris, bình thường ở các công ty.
Cảm ơn Mario, tôi sẽ ghi nhớ nó.
ok đã sẵn sàng, tôi hiểu, hãy kiểm tra liên kết này. http://wiki.squid-cache.org/SquidFaq/WindowsUpdate. để bộ đệm ẩn chống vi-rút, bạn phải biết các bản cập nhật được tải xuống từ đâu và dưới phần mở rộng nào (ví dụ .exe) và lưu vào bộ nhớ đệm ...
Cảm ơn bạn đã giúp đỡ.
Chào buổi sáng các bạn, các bạn có thể hỗ trợ trường hợp của mình được không Vì tôi có mực 2.7 .STABLE9 trên debian 6, và tôi đã cấu hình mọi thứ và khi gắn nó vào môi trường 10 máy tính, tôi nhận được thư bình thường, vấn đề nằm ở chỗ khi tôi gắn nó cho 90 máy tính, nó chỉ kéo dài vài giây hoạt động và từ đó mọi người đều họ bị bỏ lại mà không có internet. Bạn có thể hỗ trợ tôi?
Giải thích tuyệt vời, cơ bản nhưng rất rõ ràng và chính xác. Cá nhân tôi giải thích tốt nhất đã có thể đọc.
Tôi có một câu hỏi, có thể cache các ứng dụng Android như apk và xapk không?
Và đâu sẽ là cách chính xác để định cấu hình bộ đệm động bất kể nguồn gốc của tệp là gì?
Tôi sử dụng pfSense 2.4.5.