Sul sistema di caching ed altre cose

In questi giorni mi sto davvero divertendo un mondo a sviluppare la piattaforma di blogging. Devo dire che sto riuscendo a raggiungere un buon ottimo, sempre in funzione di un qualcosa costruito sulle mie esigenze.

Adesso il codice risulta molto più linerare e striminzito. La linearità e la pochezza delle righe di codice, oltre ad assicurare tempi di caricamento dell’applicazione più rapidi, sono sicuramente un buon modo per massimizzare le possibilità di personalizzazione da parte degli utilizzatori terzi.

Ci sono però alcune cose che saprei come fare. Il condizionale è d’obbligo nella misura in cui io sono sicuro delle mie cose, ma volendo condividere il lavoro, vorrei capire dove sta l’ottimo per tutti.

Un sistema di plugin?

Non sono passato a WordPress proprio per la dipendenza dell’applicazione da plugin di parti terze. E per parti terze intendo sviluppatori non collegati con il core di WP.

I vantaggi della mia scelta si sono visti con la versione 2.3 della famosa piattaforma. Il database è stato stravolto e questo ha fatto si che una gran quantità di plugin dalle funzionalità core siano diventati improvvisamente inutilizzabili.

Badate, in questo contesto per funzionalità core intendo uno nuova feature abilitata via plugin su cui di fatto ruota tutta l’attività di blogging. Questo a parer mio è una distorsione pericolosa. Di fatto gli sviluppatori di WP non badano alla cosa e fanno benissimo! Sviluppano il core indipendentemente dal ciclo di vita del plugin. Nei fatti però trovo orde di gente che non aggiorna ad una versione sicuramente superiore (la struttura del database ora è veramente eccezionale) per via del lento sviluppo del plugin su cui vive il blog.

Ho sempre considerato la cosa sbagliata. Ed ho sviluppato un codice facile proprio perchè, dato che si tratta di un software open source, chiunque vuole può modificarlo a suo piacimento.

Voi avete le vostre funzioni aggiuntive di facile sviluppo grazie alla linearità del codice, io potrei avere a disposizione una versione modificata del software con nuove funzionalità già integrate nel core.

Se ci fate caso è più o meno lo sviluppo che ha eMule. Non ha caso è il p2p di maggior successo.

Un discorso del genere da un lato preclude molti utilizzatori all’uso di opzioni nuove se non incluse nel core, dall’altro aumenta il rischio di fork che non sono proprio l’ideale per un progetto appena nato.

I vantaggi sono però indubbi in termini di pieno sviluppo!

Implementare un sistema di plugin è cosa veramente semplice. Ma non so se è una buona idea. Voi che mi dite?

Cache system in default?

Secondo dubbio che mi assilla. Un sistema di caching delle pagine da’ sicuri vantaggi. Navigazione più fluida, database meno sotto stress, e tanto tanto altro.

Ma abilitarlo in default è cosa giusta da fare? Al momento il sistema in sviluppo lo prevede attivo sempre. Le regole di creazione e distruzione della cache (ultimamente aggiornate e migliorate) sono parte integrante del cuore del software.

Far decidere all’utente se utilizzare il sistema di cache o no personalmente mi sembra un modo per permettere a qualcuno di guidare con il freno a mano tirato.

Che vantaggi ci sono nel permettere una scelta poco efficiente? E soprattutto, sarebbe veramente una scelta poco efficiente garantire la disabilitazione del caching?

Magari vi annoio, ma molte ottime cose sono riuscito ad implementarle dai vostri consigli. Il motivo per cui ho deciso di condividere l’applicazione è molto egoistico: siete grandi e mi create tanti vantaggi πŸ™‚

Ora che sapete che non sono mosso da spirito altruistico, non prendetevela e fatemi sapere cosa ne pensate πŸ˜‰

13 thoughts on “Sul sistema di caching ed altre cose”

  1. Non mi e' chiaro che cosa vorresti cachare: Una pagina HTML "generata" ? Dove la salveresti, nel filesystem ?

    Ah, non ho ricevuto la notifica RSS di questo articolo …

  2. @ Giambo: salvo l'output html in una directory ad hoc.

    @ lorenzone: ah si? Tipo quali host? Il caching alleggerisce il carico dei server, anche se aumenta (di poco) lo storing.

  3. Non mi convince molto la tua idea di caching … Cioe', e' una buona idea pero' dovresti dare il permesso di scrittura sul filesystem (In una determinata directory) all'utente sotto il quale gira Apache :/ …

    Pero' e' interessante: Come implementi la cache ? Con che criterio invalidi una entry ? Come tieni l'indice di tutte le entries ?

  4. @ Giambo: in teorie hai più che ragione. Nella pratica implementarla in quel modo sarebbe restringere il campo di utilizzo del software a chi ha un server privato.

    I criteri di caching sono molto semplici. Se la cache esiste ed ha meno di 60 minuti viene utilizzata evitando query al database.

    La cache viene distrutta, oltre che dopo la scadenza, anche dall'inserimento di un commento, la moderazione di uno o più commenti, l'update di un post.

    L'indice delle new entry lo tengo con l'id dell'articolo.

    I problemi di sicurezza sono minimi in quanto salvo l'html generato e lo uso ove necessario.

  5. Hmmm … Mi hai convinto πŸ™‚

    Pensavo che fra qualche anno, quando avrai 10'000 articoli, la ricerca di un elemento nella cache cresciuta a dismisura potesse diventare un'operazione dispendiosa.

    Idea: Potresti creare due livelli di cache, uno con elementi che avranno una vita maggiore di 60 minuti e l'altro che riflette la cache attuale.

    Nel primo livello ci metterai tutte le pagine presenti sulla pagina principale …

    Anzi, idea migliore: Invece che usare una vita di 60 minuti, potresti creare una cache di dimensione fissa. Quando inserisci una nuova pagina, dalla cache togli quella che e' stata "usata" piu' nel passato (LRU).

  6. plugin: passo…

    cache: farei scegliere all'utente!

    …e in più…la configurazione della stessa la metterei in un bel file di conf chiaro e commentato. Questo per dare la massima scelta all'utente di utilizzare tutto il sistema blog come meglio crede.

  7. Personalmente eviterei selettivamente il caching della sessione di admin , ma la mia è pura paranoia πŸ˜€

  8. @ Giambo: il limite di spazio per la cache è un'idea mondiale!

    @ sgrezzeria: si, hai ragione, anche se non penso di mettere troppe opzioni per la cache. Accesa o spenta πŸ™‚

    @ jj: non è paranoia πŸ˜€ . Il caching è di solo frontd end πŸ˜‰

  9. cache: passo.

    widget: io trovo che siano un'ottima cosa

    nell'implementazione preferirei che ogni istanza di blog (mi pare che questo engine sia multiblog) possa avere i suoi.

    WordPress.com non consente l'istallazione di widget e anche nelle istallazioni personalizzate ogni widget istallato è per tutti.

    Inoltre è semplice!

    … è davvero così semplice?

  10. CIAO, SCUSA SE T SCOCCIO, IO NN CAPISCO MOLTO D PC, NN RIESCO + AD UTILIZZARE EMULE E CERCANDO SPIEGAZIONI QUA E LA' CONTINUO A TROVARE IL TUO NOME… IO NN SO' KI SEI, NE' CAPISCO QUELLO KE DICI (CM PREMESSO SN MOOOOOLTO IGNORANTE), SE HAI 5 MIN D TEMPO VORREI UNA MANO.. SN DISPERATA… CM FACCIO A METTERMI IN CONTATTO CN TE?

Comments are closed.