Squid cache - phần 2

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 vẫn thường nói, đừng tin tất cả mọi thứ, vì vậy tôi khuyến khích bạn nên đọc thông tin từ nguồn chính thức. Tôi khuyên bạn nên đọc hướng dẫn về quy định này TẠI ĐÂY.

Câu lệnh `refresh_pattern` sẽ luôn là thẻ mà chúng ta sử dụng để 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, vì vậy flv không giống với 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 . Khi đó, nó sẽ trông như thế này: refresh_pattern -i

'Min': Đây là thời gian (tính bằng phút) mà một đối tượng sẽ được coi là "mới" nếu nó không có thẻ "expired" được chỉ định rõ ràng. Theo mặc định, Squid khuyến nghị là 0, vì một số ứng dụng động có thể hoạt động không bình thường. Giá trị này thực sự nên 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ụ, 1440 phút (một ngày) có vẻ phù hợp với tôi đối với ảnh JPG; hình ảnh trong một bài đăng trên trang web không thay đổi mỗi 5 phút.

'Phần trăm' là tỷ 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) được coi là "mới" hoặc "tươi". Ví dụ, nếu bạn liên tục tải lại hoặc làm mới trang web để xem các sửa đổi mới nhất, Squid có thể xem xét rằng nếu đối tượng đã đạt đến, chẳng hạn, 50% thời gian giữa giá trị tối thiểu và tối đa , nó sẽ tải lại đối tượng đó từ internet và cung cấp cho bạn một bản sao mới.

'Max' là giới hạn tối đa hoặc bằng 'Min' về thời gian một đối tượng được coi là "mới hoặc gần đây". Giả sử một hình ảnh trên trang chỉ được người dùng xem một lần; đối tượng đó đã đạt đến thời gian tối thiểu (min time ), nhưng chưa đạt đến thời gian tối đa (max time ). Vì vậy, khi được xem lại, một bản sao được lưu trong bộ nhớ cache sẽ được cung cấp.

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

Giờ đây, bộ nhớ đệm không chỉ nằm trên ổ cứng; chúng ta cũng có thể lưu vào bộ nhớ RAM. Giá trị này áp dụng cho mỗi tiến trình Squid, vì vậy bạn nên tính đến nó khi sử dụng các công cụ chuyển hướng như SquidGuard.

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

Vậy là hết phần này rồi. Hãy 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) trong Squid 3.5 trở lên; tôi sẽ sớm khắc phục vấn đề này, vì vậy hãy theo dõi blog này nhé.


Thêm vào danh sách nguồn ưu tiên trên Google.