Tiếp theo bài viết CHMOD là gì ? tôi muốn viết bài này vì nó cũng có phần liên quan đến nhau. Hiện nay, rất nhiều coder đưa ra giải pháp tạo cache cho site (ở đây tôi chỉ nói về site viết bằng php). Tạo cache sẽ giúp cho site chạy nhanh và giảm truy cập trực tiếp vào database, với php việc tạo cache chỉ ở mức genarate ra file, thường là html. Đây là giải pháp rất hay nếu làm tốt. Thế nhưng tôi hết sức ngạc nhiên khi thấy các file cache gồm cả các file php và thậm chí các file cache để chung thư mục với các file php khác. Điều đó có gì sai ? Việc tạo cache đòi hỏi thư mục chứa các file cache có quyền ghi và quyền đọc đối với user chạy web. Nên nên nếu file cache là php hoặc cùng với thư mục có file php thì sẽ nảy sinh vấn đề về CHMOD. Nếu CHMOD không cho ghi thì không tạo được cache, nếu cho ghi mà không cho chạy thì không chạy được. Mà cho chạy và cho ghi đồng thời thì có vấn đề về bảo mật, vấn đề như thế nào bạn đọc ở bài CHMOD là gì ?. Mà các admin thường làm gì để cho chạy tốt khi code như thế ? họ CHMOD 777. Bạn đã thấy việc không hiểu kỹ CHMOD và việc lập trình cache sẽ tạo ra nhưng lỗi mà người lập trình sẽ không bao giờ thấy vì họ chỉ biết lập trình. Còn việc admin là của ông admin, đôi khi 2 ông này là 1.
Vậy giải pháp là gì ?
- tốt nhất là tạo ra cache file dạng html hoặc binary rồi đọc lại
- thư mục chứa cache file nên đặt riêng với file php giồng làm với thư mục ảnh, các thư mục này chỉ để quyền ghi và đọc với user chạy web (cái này thì tùy thuộc hosting có thể là owner, group,...)
- không nên làm kiểu "tả phí lù" tất cả cùng đặt 1 chỗ và CHMOD 777 cho tất cả
- khi tạo cache mà có dùng counter thì nên chuyển counter ra text file để giảm tối thiểu kết nối vào DB
Hy vọng với bài viết này sẽ giúp ích được chút gì cho người cần nó. 