modely jen v některých modulech + zbytečné velké množství načtených skriptů
- Tirus91
- Člen | 199
Jak mohu v config.neon, kde mám definovány modely pro DI docílit toho,
aby se načítali jen v případě, že je zrovna v tomto daném modulu
potřebuji?
Jde mi o to, aby se to nenačítalo zbytečně.
Jak také snížít množství načtených skriptů/knihoven?
Mám jen dg/texy nette/sandbox kdyby/translation dg/dibi a v paměti mi to sežere cca 13mega. Osobně mi to příjde celkem dost nato, že cca 60% z těch načtených skriptů a knihoven ani nevyužiju.
- Tomáš Kolinger
- Člen | 136
Pokud si definuješ v neonu nějakou službu, tak se nenačte do té doby, dokud si ty o ní neřekneš (tj. je lazy). Například máš ArticlesService, NewsService, UsersService. V HomepagePresenter si necháš injectnou pouze NewsService – jediná načtená služba tedy bude NewsService, nic víc, nic míň.
Tebe IMHO trápí loading tříd, s čímž nemá DI vůbec nic společného. A tam záleží jaký používáš loader. Nettí RobotLoader drží v paměti index všech tříd, takže to zabírá paměti poměrně dost. PSR-0/PSR-4 loader se řídí podle struktury, takže nedrží v paměti žádná data a třídy načítá až když si o ně řekneš. Například na externí knihovny je dobré použít composer, který se o loading postará a externí knihovny většinou využívají loading podle struktury, takže to bude úspornější, než nechat načítat všechny třídy pomocí RobotLoaderu.
Editoval Tomáš Kolinger (25. 3. 2014 16:24)
- leninzprahy
- Člen | 150
Píšeš že máš jen …, ale
nette/sandbox
(stáhnedg/adminer-custom
anette/nette
)kdyby/translation
(stáhnesymfony/translation
asymfony/config
)
čemuž těch 13 MB celkem odpovídá. Pokud některé knihovny vůbec nevyužiješ, tak je vůbec neinstaluj, jinak se musíš smířit s větší paměťovou náročností…
- leninzprahy
- Člen | 150
Zredukovat to jde tak, že si nenainstaluješ sandbox, ale jen nette a „kostru“ si vytvoříš/nakopíruješ sám, ale obávám se že zrovna adminer toho moc nesežere.
Podle https://forum.nette.org/…ocnost-nette na nižší spotřebu pomůže eAccelerator, záleží na OS a platformě atd.
- Filip Procházka
- Moderator | 4668
eAccelerator je sračka, dneska se používá Zend Optimizer co je přímo v PHP od verze 5.5 nebo ti méně šťastní APC.