Ben optimize etmek için görevli olan PHP ile yazılmış özel bir yerleşik uygulama çerçevesi var. Bu çerçeve, çeşitli işlevsellik sağlamak için MVC "modüller" yükler paylaşılan kod temeli. Her modül görünümleri için kontrolörler ve modelleri ve PHP dosyaları için birden çok PHP sınıfları içeren bir dizin.
Görüntü ve stil dahil olmak üzere hemen hemen tüm istekleri için tüm çerçevesi yükler. Modülleri kendi paketlerini alan olacak şekilde tasarlanmıştır, ve içlerinde görüntüleri, stil, Javascript'leri veya diğer statik dosyalar içerebilir olmasıdır. Sistem sadece modülleri statik dosyaları çekmek için hangi mevcut olduğunu belirlemek için tüm modülleri yüklemek için vardır çünkü bu nedenle, normalde çok basit bir istek ne olacağını hizmet veren yük vardır.
Aşağıdaki gibi herhangi bir URI işleme için genel bir işlemdir:
- All base system classes are included
- A global exception handler and some global variables are set
- A system-wide configuration file is read. (This is a file filled with PHP statements to set config variables)
- A connection to the database is made
- The modules folder is scanned via opendir() and each module is verified to be valid and free of syntax errors, and then included.
- A second configuration file is loaded which sets up configuration for the modules
- A new instance of each module is created (calling it's __construct() method and possibly creating other database connections, performing individual startup routines, etc)
- The URI is examined and passed off to the appropriate module(s)
Adımlar 1-7 neredeyse her zaman tam olarak aynı olacaktır. Yeni modüller yüklü veya yapılandırma dosyası değiştirilmediği sürece onlar her zaman aynı işlemleri gerçekleştirecektir. Benim sorum, ne sürecini optimize etmek için yapılabilir mi? İdeal olarak, KeepAlive istekleri çalışmasına benzer şekilde çoklu istekleri, taşıma yolu çeşit istiyorum. Tüm modülleri başlatılıyor tüm yükü sadece başka bir isteği sunmak için tekrar aynı yükü olması, sadece () tek bir görüntü veya css dosyası Readfile için bir atık gibi görünüyor.
Böyle bir çerçevenin yükü azaltmak için herhangi bir yolu var mı? (Herkes tüm kodları okuyan olmadan bana yardımcı olursa ben bile bilmiyorum, bu umutsuz bir soru olabilir)