Tôi có một máy chủ web lưu tệp bộ nhớ cache và giữ chúng trong 7 ngày. Tên tệp là băm md5, tức là chính xác 32 ký tự hex và được giữ trong cấu trúc cây trông như sau:xử lý nhiều tệp tạm thời nhỏ
00/
00/
00000ae9355e59a3d8a314a5470753d8
.
.
00/
01/
Bạn hiểu ý tưởng.
Vấn đề của tôi là xóa tệp cũ mất nhiều thời gian. Tôi có một công việc cron hàng ngày chạy
find cache/ -mtime +7 -type f -delete
mất hơn nửa ngày để hoàn thành. Tôi lo lắng về khả năng mở rộng và hiệu ứng này có trên hiệu suất của máy chủ. Ngoài ra, thư mục bộ nhớ cache hiện là một lỗ đen trong hệ thống của tôi, thường xuyên bị bẫy du
hoặc find
vô tội.
Giải pháp chuẩn cho bộ nhớ cache LRU là một số loại đống. Có cách nào để mở rộng quy mô này đến mức hệ thống tập tin không? Có cách nào khác để thực hiện điều này theo cách giúp dễ quản lý hơn không?
Dưới đây là ý tưởng tôi coi:
- Tạo 7 thư mục hàng đầu, một cho mỗi ngày trong tuần, và trống rỗng một thư mục mỗi ngày. Điều này làm tăng thời gian tìm kiếm cho một tập tin bộ nhớ cache 7 lần, làm cho nó thực sự phức tạp khi một tập tin được ghi đè, và tôi không chắc chắn những gì nó sẽ làm gì để xóa thời gian.
- Lưu tệp dưới dạng bảng màu trong bảng MySQL có chỉ mục về tên và ngày tháng. Điều này có vẻ hứa hẹn, nhưng trong thực tế nó luôn luôn chậm hơn nhiều so với FS. Có lẽ tôi không làm đúng.
Bất kỳ ý tưởng nào?
Bugger :) Bạn đánh tôi với nó. +1 câu trả lời này. –
Chỉ cần chắc chắn xóa cả tệp gốc và liên kết. Bạn không muốn có nhiều liên kết chết ở đó và cũng dễ dàng xóa liên kết và không xóa tệp gốc. –