2010-03-10 11 views
15

Ogni pagina sul mio sito web è resa usando PHP.Quanti PHP include sono troppi?

Ogni file PHP utilizza circa 10 inclusi. Quindi per ogni pagina visualizzata, il server deve recuperare 10 file, oltre al resto delle sue funzioni (MySQL, ecc.).

Devo combinarli in un unico file di inclusione? Ciò renderà NESSUNA differenza rispetto alla velocità del mondo reale? Non è un compito banale come ci sarebbe un assortimento di scope variabili da risolvere.

risposta

24

Includi i file sul server, quindi non vengono "scaricati" dal browser. La differenza di prestazioni dell'utilizzo include e copia e incolla il codice o consolida i file è così trascurabile (e suppongo che stiamo parlando nel range 10   ms al 100   ms, al massimo), che non è ne vale la pena.

Sentitevi liberi di include e require a vostro piacimento. Il codice pulito è sostanzialmente più importante della rasatura inferiore a 100   ms di un caricamento della pagina. Se stai costruendo qualcosa in cui la tempistica è così importante, non dovresti comunque usare PHP.

+0

Penso che sia più complicato di così, perche 'dipende se i file vengono letti dalla memoria o disco. Dal disco - può richiedere diversi ms, dipende se è frammentato e la dimensione del file. (o il sistema operativo può memorizzare nella cache il file, o il dispositivo HDD stesso.) – Dor

+3

@Dor non sottovalutare le capacità della cache del disco :) La frammentazione del disco non influirà mai sul tuo sito –

+0

Puoi anche ridurre l'impatto sulle prestazioni aumentando realpatch_cache_size se hai un sacco di file inclusi. – gagarine

0

Sebbene le operazioni di I/O su disco siano tra i più grandi mangiatori di prestazioni, un sito normale non noterà alcun numero ragionevole di inclusivi. Prima di riscontrare problemi con include, probabilmente già avresti una cache di opcode che elimina anche questo problema.

0

include\ and requires` solo file aperto sul lato server, ma che potrebbe essere il momento consumming a seconda dell'hardware/filesystem, ecc

In ogni caso, se è possibile, utilizzare autoloader. Solo i file necessari saranno caricati in questo modo.

Quindi, se pensate che i file inclusi siano una fonte di rallentamento (e penso che ci siano molti altri aspetti da cercare prima), potete provare ad unire automaticamente i file. Hai ancora un file per classe durante lo sviluppo, ma puoi creare un file che contiene la definizione di ogni classe per avere solo uno include (qualcosa come cat <all your included file>.php > to_include.php).

3

Ciò che richiede tempo è capire dove si trovano effettivamente i file nel percorso di inclusione. Se hai più posizioni nel tuo percorso di inclusione, PHP cercherà ogni posizione finché non trova il file o non riesce (nel qual caso genera un errore). Ecco perché dovresti inserire il percorso di inclusione in cui la maggior parte dei file inclusi si trova in cima al percorso di inclusione.

Se si utilizzano percorsi assoluti nel percorso di inclusione, PHP memorizzerà nella cache il percorso nella cache di RealPath, ma si noti che ciò diventa obsoleto molto rapidamente. Quindi sì, inclusi dieci file è potenzialmente più lento di includere un file di grandi dimensioni, semplicemente perché PHP deve controllare il percorso di inclusione più spesso. Tuttavia, a meno che il tuo webserver non sia una macchina veramente debole, dieci file non sono sufficienti per avere un impatto. Questo diventa interessante solo quando si includono centinaia di file o ci sono molte posizioni da cercare, nel qual caso si dovrebbe usare comunque una cache OpCode.

Si noti inoltre che quando si includono i file, non è consigliabile includere ogni singolo file all'inizio, poiché potrebbero essere inclusi file che non vengono mai chiamati dall'applicazione per una richiesta specifica.


Riferimento