Nội dung Tăng tốc truy cập Internet bằng các mẫu refresh của Squid
-
Sự hạn chế về băng thông vẫn là một vấn đề đối với rất nhiều người khi kết
nối Internet. Tuy nhiên bạn có thể cải thiện băng thông có sẵn bằng cách cài đặt
Squid caching proxy server trên mạng của mình và sau đó điều chỉnh một số các
tham số cấu hình để tăng tốc độ hit byte của bạn, cài đặt này có thể cho phép
bạn tăng được 30-60% hiệu quả trong việc sử dụng băng tần.
Squid có thể được điều chỉnh để thực hiện những nhu cầu cần
thiết. Phiên bản ổn định nhất có ít nhất 249 tham số có khả năng cấu hình. File
cấu hình mang đậm tính giải thích nằm trong /etc/squid.conf với hơn 4.600 dòng.
Tất cả các thiết lập này đều có thể được thay đổi trong file này.
Bạn cần một cache lớn không bị lấp đầy ít nhất một tuần, nên
cho phép đến thời lượng khoảng 1 tháng. Kích cỡ thực sẽ phụ thuộc vào lưu lượng
trên mạng. Kích thước lưu trữ của bạn càng lớn thì khả năng đối tượng ai đó yêu
cầu cho sẽ nằm trong cache của bạn lớn hơn.
Để bộ nhớ được yêu cầu cho hệ điều hành và Squid có thể chạy,
bạn cần phải có bộ nhớ tối thiểu khoảng 1% kích thước của cache để lưu giữ cơ
sở dữ liệu của cache trong bộ nhớ. Cho ví dụ, với cache có 100GB không gian
trống, bạn sẽ cần khoảng 1G RAM, thêm vào đó là 100MB cho hệ điều hành và Squid.
Kích thước tối đa mặc định cho các đối tượng có thể được lưu
bởi Squid là 4MB. Ngày nay, kích thước này là quá thấp đối với những file lớn
trên Internet. Nếu máy khách của bạn download rất nhiều các file video và các
gói phần mềm, bạn có thể tăng kích thước này lên thêm một con số, chẳng hạn như
100MB chẳng hạn.
Refresh pattern sẽ xác định những gì được lưu và đã lưu từ
cache. Lý tưởng,bạn sẽ muốn squid của mình thực hiện theo các hướng các máy chủ
web đang phục vụ các nội dung để xác định những gì có thể lưu và lưu bao lâu.
Các hướng được thiết lập như các header HTTP đã xử lý và được hiểu bởi Squid.
Tuy nhiên, các hướng được cho bởi hầu hết các máy chủ hoàn toàn mặc định của các
máy chủ web và không sinh lời trong việc tiết kiệm băng thông.
Refresh patterns có định dạng:
refresh_pattern [-i] regex min percent max
[options]
Ở đây min và max là các giá trị thời gian tính bằng phút và
phần trăm. Các tùy chọn ở đây là:
- override-expire – bỏ qua header hết hiệu lực từ Web
server.
- override-lastmod – bỏ qua header ngày thay đổi cuối
cùng từ Web server.
- reload-into-ims – một yêu cầu reload từ máy khách
được chuyển đổi thành yêu cầu If-Modified-Since.
- ignore-reload – Một no-cache của máy khách hoặc chỉ
thị "reload từ máy chủ ban đầu". Yêu cầu có thể được thỏa mãn từ cache
nếu có sẵn.
- ignore-no-cache – chỉ thị no-cache từ Web server (máy
chủ làm cho đối tượng không có khả năng lưu nhớ- non-cacheable) được bỏ
qua.
- ignore-no-store – chỉ thị no-store từ Web server (máy
chủ làm cho đối tượng không có khả năng lưu nhớ) được bỏ qua.
- ignore-private – Chỉ thị riêng từ Web server (máy
chủ làm cho đối tượng không có khả năng lưu nhớ) được bỏ qua
- ignore-auth – các đối tượng yêu cầu sự thẩm định là
non-cacheable. Tùy chọn này sẽ ghi đè các hạn chế này.
- refresh-ims –yêu cầu refresh từ máy khách được
chuyển đổi thành một yêu cầu If-Modified-Since.
Tra cứu file cấu hình của bạn để xem xem tùy chọn nào trong
số các tùy chọn này hiện hữu trong phiên bản Squid của bạn.
Refresh các mẫu đang có hiệu lực nếu không có header hết hạn
từ máy chủ gốc, hoặc mẫu refresh của bạn có một tùy chọn ghi đè ngày hết hạn.
Cho ví dụ:
refresh_pattern -i \.gif$ 1440 20% 10080.
Điều này có nghĩa:
- Nếu không có header ngày hết hạn thì tất cả các đối tượng có đuôi
.gif hoặc viết hoa là .GIF (đuôi của các file ảnh) thì:
- Nếu tuổi (khoảng thời gian đối tượng nằm trên máy chủ cache của bạn)
ít hơn 1.440 phút thì coi nó còn ở trạng thái “fresh” và đáp ứng nó cũng
như stop.
- Trong trường hợp tuổi của đối tượng lớn hơn 10.080 phút, sẽ coi nó
thuộc về trạng thái cũ và khi đó sẽ phải vào máy chủ gốc để tìm kiếm một
copy mới và stop.
- Trong trường hợp độ tuổi của đối tượng nằm giữa giá trị min và max,
sử dụng lm-factor để phân biệt tình trạng fresh của đối tượng. lm-factor
chính là tỉ số của tuổi đối tượng trên máy chủ cache với thời gian bắt
đầu từ tạo hoặc thay đổi một đối tượng trên máy chủ gốc tính theo tỉ lệ
phần trăm. Vì vậy nếu đối tượng được tạo 10.000 phút cách đây trên máy
chủ gốc và nó đã lưu trên máy chủ cache khoảng 1.800 phút (độ tuổi) thì
lm-factor sẽ là 1,800/10,000 = 18%.
- Nếu lm factor nhỏ hơn 20% thì đối tượng được xem như còn ở trạng
thái fresh; khi đó đáp ứng nó và stop
- Còn trong trường hợp còn lại sẽ là trạng thái quá hạn, khi đó sẽ tìm
một copy fresh từ máy chủ gốc.
Với các đối tượng thay đổi nhưng vẫn giữ cùng một tên file,
chẳng hạn như các đoạn video, image, âm thanh, hay các file thực thi, bạn có thể
thay đổi mẫu refresh để coi chúng vẫn ở trạng thái fresh trên Squid trong một
khoảng thời gian dài hơn, tăng khả năng hit có thể. Cho ví dụ, bạn có thể thay
đổi mẫu refresh ở trên thành:
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$
10080 90% 43200 override-expire ignore-no-cache ignore-no-store
ignore-private
refresh_pattern -i
\.(iso|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv)$ 43200 90% 432000 override-expire
ignore-no-cache ignore-no-store ignore-private
refresh_pattern -i \.(deb|rpm|exe|zip|tar|tgz|ram|rar|bin|ppt|doc|tiff)$
10080 90% 43200 override-expire ignore-no-cache ignore-no-store
ignore-private
refresh_pattern -i \.index.(html|htm)$ 0 40%
10080
refresh_pattern -i \.(html|htm|css|js)$ 1440 40%
40320
refresh_pattern . 0 40% 40320
Đôi khi có các máy chủ gốc, chẳng hạn như youtube.com, thực
hiện mọi công việc, do đó làm cho chúng trở nên khó khăn và không thể cho bạn có
khả năng cache nội dung của nó. Các tùy chọn ở trên sẽ giúp bạn khắc phục được
những hạn chế đó.
Các mẫu refresh được tương xứng (match) với tất cả các yêu
cầu theo thứ tự từ trên đỉnh cho đến khi có một rule tương xứng. Rule cuối cùng
này là một “catch-all” và sẽ “match” với bất cứ yêu cầu nào không được thỏa mãn
bởi các rule nào ở trên nó. Cũng có các rule mặc định “catch-all” cho các giao
thức khác nhau như FTP và gopher tại phần trên của danh sách để được miễn các
giao thức đó từ các mẫu bên dưới chúng.
Mặc định, Squid sẽ không lưu các nội dung mang tính động. Các
nội dung mang tính động này được phân biệt bởi việc “match” với "cgi-bin"
hoặc "?". Tính năng này được kích hoạt thông qua các thiết lập "hierarchy_stoplist"
và "cache deny" theo thứ tự các phiên bản của Squid. Trong các phiên
bản gần đây, bắt đầu từ 3.1, tính năng này được kích hoạt thông qua một mẫu
refresh chẳng hạn như refresh_pattern (/cgi-bin/|\?) 0 0% 0.
Mẫu này cho phép bạn chỉ định các site đáp ứng các nội dung mang tính động có
thể làm cho có khả năng cache trong các rule khác. Cho ví dụ, bạn có thể thiết
lập một mẫu refresh như:
refresh_pattern -i movies.com/.* 10080 90% 43200
refresh_pattern (/cgi-bin/|\?) 0 0% 0
Sau đó, nếu nội dung từ movies.com được đáp ứng với "?" trong
URL của chúng thì phần nội dung sẽ vẫn được cache nếu tất cả các điều kiện cần
thiết vẫn hội tụ đủ.
Với các phiên bản trước đấy hơn của Squid, bạn sẽ phải định
nghĩa một danh sách điều khiển truy cập (ACL) cho các nhà cung cấp nội dung mà
bạn muốn tạo một ngoại lệ cho, sử dụng cache accept để miễn nó trước khi có rule
cache deny. Ví dụ dưới đây là từ Squid wiki:
# Let the client's favourite video site through
acl youtube dstdomain .youtube.com
cache allow youtube
# Now stop other dynamic stuff being cached
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
Squid tạo rất nhiều yêu cầu DNS, mỗi một dns yêu cầu một yêu
cầu http. Cài đặt một máy chủ lưu trữ (caching) DNS trên máy chủ của bạn và cho
Squid sử dụng nó để giảm các yêu cầu DNS của bạn. Đây thực sự là một cách làm
rất hữu dụng.
Các site giống windowsupdate.com của Microsoft, đây là site
mà hầu như tất cả các máy tính Windows đều cập nhật cho hệ điều hành của họ, bị
vây quanh bởi hầu hết các site tiêu tốn nhiều băng tần trên một số mạng. Tuy
nhiên, chúng không có khả năng lưu nhớ (cache) vì chúng phải cung cấp các đáp
trả từng phần (http trả về mã 206), Squid hiện không lưu nhớ. Ở đâu bạn có được
sự điều khiển trên các máy khách, bạn có thể cài đặt Update Server của Microsoft
để quản lý việc cache cho windowsupdate. Nếu bạn không thể sử dụng Update
Server, bạn có thể sử dụng thao tác delay của Squid – một công nghệ quản lý băng
tần – để hạn chế phần băng tần mà windowsupdate sẽ tiêu tốn trong suốt thời gian
cao điểm của bạn. Trong trường hơp này các máy khách sau đó sẽ phải online trong
suốt các giai đoạn không cao điểm để hoàn tất các nâng cấp của chúng.
Bên dưới, chúng tôi có cấu hình một delay pool toàn cục ở tốc
độ 64Kbps (8KBps). Lưu lượng của miền đích là windowsupdate.com trong suốt gian
đoạn cao điểm 10:00-16:00 sẽ được hạn chế là 64Kbps.
acl winupdate dstdomain .windowsupdate.com
acl peakperiod time 10:00-16:00
delay_pools 1
delay_class 1 1
# 64 Kbit/s
delay_parameters 1 8000/8000
delay_access 1 allow winupdate peakperiod
Sau khi tạo thay đổi như cách làm ở trên, tốc độ hit byte của
Squid đã tăng lên từ 8% đến khoảng 26-37%. Nếu bạn đạt được vào khoảng 33% thì
điều đó có nghĩa rằng một phần ba trong tổng số lưu lượng đang đến từ cache của
bạn, không phải đến từ các liên kết chậm hơn trong Internet. Để kiểm tra và phân
tích các bản ghi để phân định rõ hiệu suất của Squid bạn có thể sử dụng
squid3-client và calamaris.
Source Tăng tốc truy cập Internet bằng các mẫu refresh của Squid: ThongTinBaoMat.Com,quantrimang.comTăng tốc truy cập Internet bằng các mẫu refresh của Squid Tags Tăng tốc truy cập Internet bằng các mẫu refresh của Squid Những bài viết tương tự Tăng tốc truy cập Internet bằng các mẫu refresh của Squid: Bảo mật Passwords đã lưu trên Internet Explorer | Tăng tốc cho mạng và truy cập Internet | Những thao tác cơ bản để xóa bỏ phần mềm bảo mật giả mạo | Cảnh báo “nghe lén” trên mạng | Cài đặt SSH trên Router để truy cập web an toàn | Báo động tình trạng bảo mật server | Android và iOS bảo mật tốt hơn hệ điều hành PC | 3 thiếu sót về bảo mật của Google+ | IBM giới thiệu công cụ bảo mật AppScan | Cách kiểm tra các kết nối không bảo mật |