Thứ sáu, 16/08/2013 | 00:00 GMT+7

Cách cấu hình bộ nhớ đệm nội dung bằng module Apache trên VPS


Web Cache là gì

Bộ nhớ đệm web là một cách cải thiện hiệu suất server bằng cách cho phép lưu trữ nội dung thường được yêu cầu ở một vị trí dễ truy cập hơn. Điều này cho phép khách truy cập truy cập nội dung nhanh hơn thay vì phải tìm nạp cùng một dữ liệu nhiều lần.

Bằng cách tạo hiệu quả các luật lưu vào bộ nhớ đệm, nội dung phù hợp với bộ nhớ đệm sẽ được lưu trữ để tiết kiệm tài nguyên, trong khi nội dung có tính năng động cao sẽ được phân phát bình thường. Trong hướng dẫn này, ta sẽ thảo luận về cách cấu hình Apache bằng cách sử dụng các module bộ nhớ đệm của nó.

Lưu ý : Hướng dẫn này được viết với Apache 2.2. Những thay đổi đối với Apache 2.4 đã dẫn đến việc thay thế một số module được thảo luận trong hướng dẫn này. Do đó, không phải tất cả các bước được đề xuất bên dưới đều hoạt động trên các cài đặt Apache 2.4.

Giới thiệu về bộ nhớ đệm trong Apache

Apache có một số phương pháp lưu trữ nội dung bộ nhớ đệm khác nhau thường được truy cập. Hai module phổ biến nhất cho phép chức năng này được gọi là "mod_cache" và "mod_file_cache".

Mô-đun mod_file_cache

Mô-đun mod_file_cache là module đơn giản hơn trong hai cơ chế bộ nhớ đệm. Nó hoạt động bằng cách lưu vào bộ nhớ đệm nội dung:

  • Được yêu cầu thường xuyên
  • Thay đổi rất ít khi

Nếu hai yêu cầu này được đáp ứng, thì mod_file_cache có thể hữu ích. Nó hoạt động bằng cách thực hiện một số thao tác truy cập file trên các file thường được sử dụng khi server được khởi động.

Mô-đun mod_cache

Mô-đun mod_cache cung cấp các schemas bộ nhớ đệm nhận biết HTTP. Điều này nghĩa là các file sẽ được lưu vào bộ nhớ cache theo một hướng dẫn chỉ định thời gian một trang có thể được coi là "mới".

Nó thực hiện các hoạt động này bằng cách sử dụng module "mod_mem_cache" hoặc module "mod_disk_cache". Đây là những mô hình bộ nhớ đệm phức tạp hơn mod_file_cache và hữu ích hơn trong hầu hết các trường hợp.

Sử dụng mod_file_cache với Apache

Mô-đun mod_file_cache rất hữu ích để lưu vào cache các file sẽ không thay đổi trong vòng đời của version Apache hiện tại. Các kỹ thuật được sử dụng với module này sẽ khiến mọi thay đổi tiếp theo không được áp dụng cho đến khi server được khởi động lại.

Các cơ chế bộ nhớ đệm này chỉ được dùng với các file bình thường, do đó, không có nội dung được tạo động hoặc các file được tạo bởi trình xử lý nội dung đặc biệt sẽ hoạt động ở đây.

Mô-đun cung cấp hai chỉ thị được sử dụng để thực hiện bộ nhớ đệm theo những cách khác nhau.

MMapFile

MMapFile là một chỉ thị được sử dụng để tạo danh sách các file và sau đó ánh xạ các file đó vào bộ nhớ. Điều này chỉ được thực hiện khi khởi động server , vì vậy điều quan trọng là không có file nào được đặt để sử dụng loại bộ nhớ đệm này bị thay đổi.

Bạn có thể cài đặt loại bộ nhớ đệm này trong file cấu hình server . Điều này được thực hiện bằng cách chỉ định các file được lưu vào bộ nhớ đệm trong danh sách được phân tách bằng dấu cách:

MMapFile /var/www/index.html /var/www/otherfile.html var/www/static-image.jpg

Các file này sẽ được giữ trong bộ nhớ và được phục vụ từ đó khi tài nguyên được yêu cầu. Nếu các file nào bị thay đổi, bạn cần khởi động lại server .

CacheFile

Lệnh này hoạt động bằng cách mở các chốt đối với các file được liệt kê. Nó duy trì một bảng các bộ mô tả file đang mở này và sử dụng nó để giảm thời gian mở các file này.

, các thay đổi đối với file trong quá trình hoạt động của server sẽ không được bộ nhớ đệm nhận dạng. Nội dung root sẽ tiếp tục được cung cấp cho đến khi server được khởi động lại.

Chỉ thị này được sử dụng bằng cách chỉ định danh sách file được phân tách bằng dấu cách sẽ được lưu vào bộ nhớ đệm bằng phương pháp này:

CacheFile /this/file.html that/file.html another/file/to/server.html

Điều này sẽ làm cho các file này được lưu vào bộ nhớ cache khi khởi động server .

Sử dụng mod_cache với Apache

Mô-đun mod_cache là một module bộ nhớ đệm linh hoạt và mạnh mẽ hơn. Nó hoạt động bằng cách triển khai bộ nhớ đệm nhận biết HTTP của các file thường được truy cập.

Trong khi tất cả các cơ chế lưu vào bộ nhớ đệm đều dựa vào việc cung cấp file ở một số trạng thái liên tục, mod_cache có thể xử lý nội dung thay đổi bằng cách cấu hình thời gian file hợp lệ để lưu vào cache .

Mô-đun này dựa vào hai module khác để thực hiện phần lớn việc triển khai bộ nhớ cache. Đây là "mod_disk_cache" và "mod_mem_cache".

Sự khác biệt giữa hai điều này là nơi bộ nhớ cache được lưu giữ, trên đĩa hoặc trong bộ nhớ tương ứng. Chúng được lưu trữ và truy xuất bằng các khóa dựa trên URI. Điều quan trọng cần lưu ý là bạn có thể cải thiện bộ nhớ đệm của trang web bằng cách bật đặt tên chuẩn.

Điều này có thể được thực hiện bằng cách đưa chỉ thị này vào cấu hình server hoặc định nghĩa server ảo:

UseCanonicalName On

Cách cấu hình bộ nhớ đệm

Ta sẽ xem xét một số chỉ thị cấu hình phổ biến và cách chúng ảnh hưởng đến chức năng của cơ chế bộ nhớ đệm.

Nếu bạn tìm trong folder "/ etc / apache2 / mods-available", bạn có thể thấy một số file cấu hình mặc định cho các module này.

Cấu hình mod_mem_cache

Hãy xem cấu hình mod_mem_cache:

sudo nano /etc/apache2/mods-available/mem_cache.conf
<IfModule mod_mem_cache.c>
	CacheEnable mem /
	MCacheSize 4096
	MCacheMaxObjectCount 100
	MCacheMinObjectSize 1
	MCacheMaxObjectSize 2048
</IfModule>
Các chỉ thị này chỉ được đọc nếu module mod_mem_cache được tải. Điều này có thể được thực hiện bằng lệnh như sau:
sudo a2enmod mem_cache
sudo service apache2 restart
Điều này sẽ kích hoạt mod_mem_cache và cả mod_cache.
CacheEnable mem /

Dòng "CacheEnable mem /" yêu cầu apache tạo bộ nhớ đệm cho nội dung được lưu trữ dưới "/" (là tất cả mọi thứ).

MCacheSize 4096
MCacheMaxObjectCount 100

Vài dòng tiếp theo mô tả tổng kích thước của bộ nhớ cache và các loại đối tượng sẽ được lưu trữ. Chỉ thị "MCacheSize" và chỉ thị "MCacheMaxOjectCount" đều mô tả kích thước tối đa của cache , đầu tiên là về mức sử dụng bộ nhớ, sau đó là về lượng đối tượng tối đa.

MCacheMinObjectSize 1
MCacheMaxObjectSize 2048

Hai dòng tiếp theo mô tả các loại dữ liệu sẽ được lưu vào bộ nhớ đệm, về mức độ sử dụng bộ nhớ. Các giá trị mặc định chỉ định rằng các file từ 1 byte đến 2 kilobyte sẽ được xem xét để lưu vào bộ nhớ đệm.

Cấu hình mod_disk_cache

Ta có thể tìm hiểu về một tập hợp các chỉ thị khác bằng cách kiểm tra file cấu hình mod_disk_cache:

sudo nano /etc/apache2/mods-available/disk_cache.conf
<IfModule mod_disk_cache.c>
	CacheRoot /var/cache/apache2/mod_disk_cache
	#CacheEnable disk /
	CacheDirLevels 5
	CacheDirLength 3
</IfModule>

Cấu hình này được tải nếu bạn bật module mod_disk_cache, có thể được thực hiện bằng lệnh :

sudo a2enmod disk_cache
sudo service apache2 restart

Lệnh này cũng sẽ kích hoạt mod_cache để hoạt động bình thường.

CacheRoot /var/cache/apache2/mod_disk_cache
#CacheEnable disk /

Lệnh "CacheRoot" chỉ định nơi nội dung đã lưu trong bộ nhớ cache sẽ được lưu giữ. Lệnh "CacheEnable disk /" bị tắt theo mặc định. Bạn nên bật tính năng này trên cơ sở server ảo để hiểu rõ hơn về những gì sẽ được lưu vào bộ nhớ đệm.

CacheDirLevels 5
CacheDirLength 3

Hai chỉ thị còn lại xác định cấu trúc bộ nhớ đệm bên trong root cache . Mỗi phần tử được lưu trong bộ nhớ cache được băm bởi URL của nó, sau đó hàm băm được sử dụng làm tên file và đường dẫn folder .

CacheDirLevel quyết định có bao nhiêu folder để tạo từ chuỗi băm và CacheDirLength quyết định có bao nhiêu ký tự trong mỗi tên folder .

Ví dụ: nếu bạn có một file được băm thành "abcdefghijklmnopqrstuvwxyz", thì CacheDirLevel là 2 và CacheDirLength là 4 sẽ dẫn đến việc file này được lưu trữ trong:

[path_of_cache_root]/abcd/efgh/ijklmnopqrstuv

Bộ nhớ đệm được lưu trữ trên đĩa có thể trở nên lớn tùy thuộc vào ngày hết hạn của nội dung. Apache bao gồm một công cụ được gọi là "htcacheclean" để giảm bộ nhớ cache xuống kích thước đã cấu hình . Điều này nằm ngoài phạm vi của hướng dẫn này.

Sử dụng CacheLock để tránh quá áp lực cho phần backend

Sự cố có thể phát sinh trên server bận khi tài nguyên được lưu trong bộ nhớ cache hết hạn.

Bộ nhớ cache cần được làm mới sẽ phải tìm nạp lại file từ tài nguyên file bình thường. Trong thời gian này, nếu có nhiều yêu cầu về file . Điều này có thể tạo ra một lượng lớn yêu cầu tới server backend khi version được lưu trong bộ nhớ cache đang được làm mới.

Để tránh trường hợp này, có thể kích hoạt một file khóa cho biết rằng tài nguyên đang được lưu lại và các yêu cầu tiếp theo sẽ không chuyển đến phần backend , vì vấn đề đang được giải quyết.

Khóa này có thể ngăn không cho apache cố gắng lưu vào cache cùng một tài nguyên nhiều lần khi lần đầu tiên lưu vào cache . Nó cũng sẽ cung cấp tài nguyên cũ cho đến khi cache được làm mới hoàn tất.

Ba chỉ thị được sử dụng để kiểm soát CacheLock:

CacheLock [ On | Off ]
CacheLockMaxAge [time_in_seconds]
CacheLockPath [/path/to/lock/directory]

Chỉ thị đầu tiên bật tính năng và chỉ thị thứ ba cài đặt folder nơi các khóa tài nguyên sẽ được tạo.

Lệnh thứ hai, CacheLockMaxAge, được sử dụng để cài đặt thời gian dài nhất tính bằng giây mà file khóa sẽ được coi là hợp lệ. Điều này rất quan trọng trong trường hợp có sự cố hoặc sự chậm trễ bất thường trong việc làm mới tài nguyên.

Kết luận

Bộ nhớ đệm trong Apache có thể đơn giản hoặc liên quan tùy thuộc vào nhu cầu của bạn. Mặc dù bất kỳ loại bộ nhớ đệm nào cũng có thể cải thiện hiệu suất trang web , nhưng điều quan trọng là phải kiểm tra cấu hình của bạn đảm bảo rằng chúng đang hoạt động chính xác.

Điều cần thiết là bạn phải làm quen với hậu quả của việc bộ nhớ đệm được cấu hình không đúng cách. Đôi khi cần phải đánh giá lại các phương pháp bảo mật của bạn sau khi triển khai bộ nhớ đệm đảm bảo rằng các tài nguyên riêng tư không vô tình bị lưu vào bộ nhớ đệm để sử dụng chung.

Tài liệu user apache có nhiều thông tin về cách cấu hình bộ nhớ đệm nếu bạn gặp khó khăn. Ngay cả khi bạn có xử lý về cấu hình, đó là một tài liệu tham khảo hữu ích và tốt.

Bởi Justin Ellingwood

Tags:

Các tin liên quan

Cách tạo chuyển hướng tạm thời và vĩnh viễn với Apache và Nginx
2013-08-12
Cách cấu hình web server Apache trên Ubuntu hoặc Debian VPS
2013-08-07
Cách thiết lập Apache với Chứng chỉ SSL đã ký miễn phí trên VPS
2013-07-17
Cách bắt đầu với mod_pagespeed với Apache trên Ubuntu và Debian Cloud Server
2013-07-09
Cách bắt đầu với mod_pagespeed với Apache trên server cloud CentOS và Fedora
2013-07-09
Cách tạo chứng chỉ SSL trên Apache trên Arch Linux
2012-11-09
Cách cài đặt LAMP (Linux, Apache, MySQL, PHP) trên Fedora
2012-11-06
Cách thiết lập server ảo Apache trên Arch Linux
2012-09-11
Cách tạo trang 404 tùy chỉnh trong Apache
2012-07-10
Cách tạo chứng chỉ SSL trên Apache cho CentOS 6
2012-06-06