Tôi đang làm việc với Magento và có một hàm kết hợp CSS và Javascript thành một tệp lớn.Làm thế nào để giám sát hiệu quả một thư mục để thay đổi trên linux?
Bất kể những ưu và nhược điểm của việc đó, có những vấn đề sau đây:
Các tập tin chính thức được lưu trữ ở nhiều cấp độ mà bao gồm nhưng không giới hạn:
- Amazon CloudFront
- Proxy máy chủ
- Clients cache của trình duyệt
Magento sử dụng một MD5 tổng hợp các tên tệp css được ghép nối để tạo một tên tệp mới cho tệp css đã hợp nhất. Vì vậy, mỗi trang mà có một bộ khác biệt của các tập tin css được một tập tin css sáp nhập thích hợp.
Để khắc phục sự cố bộ nhớ đệm, tôi cũng bao gồm dấu thời gian sửa đổi tệp vào băm đó, để băm mới được tạo, mỗi lần một tệp css được sửa đổi.
Vì vậy, những lợi thế đầy đủ của điểm đệm bộ nhớ không xác thực, nhưng nếu một cái gì đó được thay đổi, nó có thể nhìn thấy ngay lập tức, bởi vì liên kết tài nguyên đã thay đổi.
Cho đến nay rất tốt:
Chỉ có vấn đề là, rằng tên tập tin được sử dụng để tạo ra có, chỉ có những người mà thông thường sẽ được tham chiếu trực tiếp trong khối HTML-Head, và don' t bao gồm nhập khẩu css bên trong các tệp đó.
Do đó, các thay đổi trong tệp được nhập bên trong tệp css sẽ không dẫn đến băm mới.
Không, tôi thực sự không muốn phân tích đệ quy tất cả các mục nhập và quét chúng hoặc một cái gì đó tương tự.
Tôi thích suy nghĩ về giải pháp dựa trên thư mục. Có điều gì để giám sát hiệu quả "thay đổi cuối cùng bên trong thư mục" trên cơ sở hệ thống tệp không?
Chúng tôi đang sử dụng ext4.
Hoặc có thể có cách khác, có thể với lệnh tìm, điều đó có thực hiện tất cả công việc dựa trên chỉ mục inode không?
Điều gì đó tương tự?
Tôi đã thấy rất nhiều chương trình ngay lập tức "thấy" thay đổi mà không quét toàn bộ hệ thống tệp. Tôi tin rằng cũng có loại "tập tin thao tác xem" daemon có sẵn dưới Linux.
Vấn đề là thư mục css khá lớn.
Có ai có thể chỉ cho tôi đúng hướng không?
giải pháp tốt nhất cho đến nay! Tôi thực sự thích nó. tôi đã hy vọng cho một giải pháp độc lập hơn mà không đòi hỏi một công việc nền để được bắt đầu lắng nghe, nhưng tôi thực sự thích nó. –
Vâng, PHP thường là chậm hơn nhiều sau đó biên dịch programms và làm kiểm tra trên mỗi tải trang là đắt hơn nhiều sau đó kích hoạt một acion một lần cho mỗi thay đổi (vì thay đổi là hiếm). Nhưng nếu bạn không quan tâm đến tốc độ - bạn có thể sử dụng hàm readdir() của php để lặp qua thư mục của bạn và sử dụng hàm stat() của php trên mỗi tệp để nhận được mtime (thời gian sửa đổi lần cuối). Bạn có thể tăng hiệu suất nếu có một số độ trễ cho phép trước khi thay đổi được áp dụng - bạn có thể chạy kiểm tra này chỉ sau mỗi N phút (bạn có thể sử dụng cơ sở dữ liệu/tệp tạm thời/vv .. để tiết kiệm thời gian kiểm tra cuối cùng) hoặc sử dụng cron. – XzKto