modely jen v některých modulech + zbytečné velké množství načtených skriptů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Tirus91
Člen | 199
+
0
-

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.

Oli
Člen | 1215
+
0
-

Pokud si nepředáváš celý context, tak si v každým presenteru injectneš jen ty modely, který potřebuješ.

Tirus91
Člen | 199
+
0
-

Oli napsal(a):

Pokud si nepředáváš celý context, tak si v každým presenteru injectneš jen ty modely, který potřebuješ.

co tím prosím myslíš? :(

Tomáš Kolinger
Člen | 136
+
0
-

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
+
0
-

Píšeš že máš jen …, ale

  • nette/sandbox (stáhne dg/adminer-custom a nette/nette)
  • kdyby/translation (stáhne symfony/translation a symfony/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í…

Tirus91
Člen | 199
+
0
-

@Tomáš Kolinger tak to jsi mi trochu zamotal hlavu :)

@leninzprahy kdyby/translation pouzivam pouze na multilang, takze to zrovna vyuzivam no :( a co se tyce nette/sandbox, tak zde to mohu jak redukovat? dg/adminer bych rad odebral, je mi k nicemu, ten mam resen jinak

Šaman
Člen | 2666
+
0
-

Adminer klidně vymaž, ale ten se ti nenačítá při spuštění aplikace, takže té paměti nijak nepomůžeš.

leninzprahy
Člen | 150
+
0
-

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
+
0
-

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.