Tôi đang tải tệp XML từ đĩa bằng cách sử dụng file_get_contents và như một bài kiểm tra tôi thấy tôi có thể tải tệp 156K bằng cách sử dụng file_get_contents()
1.000 lần trong 3,99 giây. Tôi đã subclassed phần mà không tải và thay thế nó bằng một lớp memcache, và trên máy dev của tôi tìm thấy tôi có thể làm 1000 tải của cùng một tài liệu trong 4,54 giây.Tại sao tệp_get_contents nhanh hơn memcache_get?
Tôi đánh giá cao rằng file_get_contents() sẽ làm một số bộ nhớ đệm, nhưng có vẻ như nó thực sự nhanh hơn một kỹ thuật bộ nhớ đệm nổi tiếng. Trên một máy chủ duy nhất, hiệu suất của file_get_contents()
có tốt không?
Tôi đang sử dụng PHP 5.2.17 qua Macports, OS X 10.6.8.
Chỉnh sửa: Tôi đã tìm thấy trên tài liệu XML có kích thước này, có một lợi ích nhỏ khi sử dụng cờ MEMCACHE_COMPRESSED
. 1.500 lượt tải qua memcache được thực hiện trong 6.44 giây (với nén) thay vì 6.74 (không có). Tuy nhiên cả hai đều chậm hơn file_get_contents
, có cùng số lượng tải trong 5,71 giây.
Ah, thú vị. Bạn đang nói rằng trên một máy chủ web trong đó các tập tin XML khác nhau đang được nạp tất cả các thời gian, hiệu suất của phương pháp tiếp cận memcache _might_ trong một số trường hợp được tốt hơn? (Tôi hy vọng sẽ triển khai trên một VPS Linux cấp thấp, có lẽ với 512MB RAM - rất nhiều miễn phí cho 64M mặc định mà memcache dự trữ theo mặc định.) – halfer
Tuy nhiên, tôi tự hỏi liệu ganh đua có thể loại bỏ một thứ gì đó trong bộ nhớ cache của FS sẽ có khả năng loại bỏ một thứ gì đó ra khỏi bộ nhớ cache của memcache ';-) ' – halfer
Trên một VPS dành riêng cho một Ứng dụng, bạn sẽ có thể có được mọi thứ để phù hợp. Tuy nhiên giá trị của nó "đúng kích thước" lưu trữ của bạn: sử dụng 32M cho memcache hoặc ít hơn nếu đó là đủ. Hãy chắc chắn rằng bạn sử dụng APC hoặc Xcache nếu ứng dụng của bạn dựa trên PHP. Đừng quên rằng bạn có thể nhận được cổ tức hiệu suất tốt từ việc điều chỉnh cache MySQL nếu bạn sử dụng MySQL, ... 512Mb là đủ nhỏ mà bạn cần phải phân bổ một cách khôn ngoan. – TerryE