Tối ưu hóa khởi động OPcache PHP

Đối với các trang web dựa trên WordPress , Joomla hoặc Laravel và không có nội dung dành riêng cho người dùng, bạn nên giữ tất cả các trang trong bộ đệm HTML tĩnh và chỉ tạo bộ đệm theo cách thủ công (hoặc tự động) khi các thay đổi được thực hiện trong phần phụ trợ. Tuy nhiên, nếu trang chứa nội dung động phụ thuộc vào phiên và cookie hoặc cả ngôn ngữ và vị trí, thì OPcache là phù hợp .


Cái gọi là thời gian khởi động cho cả ba hệ thống được đề cập là hơn 100 mili giây với máy chủ CentOS7 mới được cài đặt (với SSD và PHP 7.1). Mỗi khi một script PHP được thực thi, nó phải được biên dịch thành bytecode trong thời gian chạy. OPcache hiện thực hiện một bộ đệm ẩn cho mã bytecode này - nếu cùng một tập lệnh PHP được thực thi với yêu cầu tiếp theo, nó không cần phải được biên dịch lại. Sau khi kích hoạt OPcache, chúng tôi thiết lập các cài đặt sau:

9006cec6c5d3d2498ee26c5bfd91590a

Thời gian thực hiện (trung bình hơn 10 lần thực thi) hiện đã được giảm đáng kể:

WordPress 4.7.4 Joomla 3.7 Laravel 5,4
không có OPcache 295 mili giây 201 mili giây 110 mili giây
với OPcache 54 mili giây 59 mili giây 13 mili giây
Hệ số 5,5 3,5 8,5

Vì chúng tôi đặt validate_timestamps thành 0 và đồng thời revalidate_freq thành một ngày, bộ nhớ cache hầu như không bao giờ được tạo lại tự động (chúng tôi có ý thức làm điều này theo cách thủ công). Với một git hook nhỏ, một tập lệnh PHP được thực thi với mỗi lần "kéo". Cách kích hoạt hook:

a1678610c8b4c7db5997375944183830

a1678610c8b4c7db5997375944183830

Chức năng trợ giúp sau đây cũng hỗ trợ các đoạn mã riêng lẻ (hoặc tổng thời gian thực hiện) để đo lường:

085f4291bbcc4e8a64bbea951ff49ab9

Nếu bạn muốn nhận thông tin hữu ích như trạng thái, bộ nhớ đã sử dụng hoặc số lượng tệp được lưu trong bộ nhớ cache, bạn sử dụng hàm PHP này:

3f6309d04bc7e48dd909859321b96209

Để cũng được hưởng lợi từ OPcache trong môi trường phát triển cục bộ (điều này thường không được khuyến khích), chúng tôi sử dụng một thủ thuật.

OPcache đang hoạt động trên tất cả các máy chủ đã cài đặt mô-đun OPcache và trên đó cài đặt opcache.enable không được đặt rõ ràng. Chúng tôi để nó theo cách đó. Chúng tôi chỉ đặt opcache.validate_timestamps = 1 trong php.ini. Điều này có nghĩa là opcache.revalidate_freq = 2. Điều này có nghĩa là OPcache được xác thực lại gần như liên tục cho mọi dự án. Đối với những dự án mà chúng tôi muốn kích hoạt OPcache vĩnh viễn, chúng tôi sử dụng trong .htaccess cài đặt sau:

1dd64a3f2fe4425b29b1409410fe3fc0

Sau đó, chúng tôi khởi động lại máy chủ web và tạo tập lệnh sau:

91fb5289160e410607c9ea89112a575b

Tập lệnh này xóa bộ nhớ cache và xây dựng lại nó cùng một lúc. Bây giờ chúng ta đặt lệnh RunOnSave liên quan đến không gian làm việc trong VSCode của trình soạn thảo yêu thích của chúng ta:

91fb5289160e410607c9ea89112a575b

Trở lại