Rendering asincrono dei CSS

Far convergere le esigenze di sviluppo web con le indicazioni di Google PageSpeed Insights è una vera sfida, soprattutto se si ha a che fare con piattaforme di gestione contenuti o ecommerce preconfezionati da customizzare. La condotta da adottare nell'integrare script o css dovrebbe rispettare le seguenti regole:

  • Evitare collegamenti a file esterni, perchè ogni blocco esterno rallenta la velocità di caricamento
  • Trovare un metodo per renderizzare subito i fogli di stile o gli script relativi alla zona della pagina above the fold, contemporaneamente al caricamento della stessa
  • Caricare in modo asincrono css e script relativi alla zona non above the fold

Per gli script lato client, il problema è superabile aggiungendo async o defer come attributo al tag <script>. Mentre per i CSS il problema si complica: Spesso si ha a che fare con piattaforme che aggiungono css dentro la sezione <head> con il tag

<link rel="stylesheet" href="path/fogliodistile.css" />

Riuscire ad individuare il codice lato server che si preoccupa di fare questa aggiunta, è già un lavoraccio. Individuato il punto, si pongono i problemi di ottimizzazione: come spostare il caricamento del css in fondo alla pagina? renderlo asincrono e contemporaneamente evitare una chiamata di blocco HTML esterno? ...

Un cyberspazio imperfetto, ma funzionale

Dopo anni di esperienza e approfondimenti sul tema, sono giunto a conclusione che la ricerca della perfezione nella stesura di codice per il web è un miraggio. La complessità dei problemi e le varie sfaccettature presenti in qualunque progetto, rendono impossibile trovare un giusto equilibrio nel prodotto finale, e così come accade per un abito stretto che quando viene tirato da una parte inevitabilmente lascia scoperte altre parti del corpo, cosi accade in informatica e nello specifico, nel Web development . Mi accorsi di questo problema quando in una chiaccherata su un famoso blog di web design, venne fuori l'argomento del rapporto tra captcha e accesso ai disabili e ancora ero un "neofita" del settore. Non essendoci una soluzione valida a riguardo, tuttora quel dibattito che girava intorno ad una domanda, attende risposta : "Viene prima la sicurezza o l'accessibilità?"

Ho individuato 5 aree specialistiche che si contendono, di volta in volta, la priorità nello sviluppo web. Tutti sono ingredienti necessari, ma solo uno è indispensabile (il primo). ...

Connessioni tra SEO e livello di trasporto TCP

Tutti i consulenti SEO sono consapevoli, più o meno, dell'importanza della velocità di caricamento di un sito web. Sanno che questo fattore influisce sia sulla riduzione del tasso di abbandono dei visitatori, sia sul buon esito della scansione degli spider-bot dei motori di ricerca. Ma perchè ? Cosa c'è dietro a questa ossessione per la velocità ? Un "mistero" che aleggia nientemeno che su un algoritmo usato per il controllo della congestione a livello di trasporto del protocollo TCP può influire addirittura sulla SEO ? ebbene si !

E' un argomento ostico, ma chi avrà la pazienza di seguirmi in questo articolo, sicuramente alla fine ne capirà qualcosa in più e avrà sprecato bene il suo tempo. Andiamo con ordine: La comparsa di reti telematiche sempre più veloci, non solo a livello di reti cablate ma anche mobile (pensiamo al 4G, e a breve il 5G) sta spingendo inevitabilmente l'utenza a ricercare delle esperienze di navigazione altrettanto veloci. Secondo Google, nel caso delle connessioni mobile (che in genere sono più lente di quelle cablate), l'utenza si aspetta in media una risposta per ogni richiesta web non superiore ad 1 secondo.

Tale secondo però è così suddiviso:

  • 300 ms di ritardo per questioni di risoluzioni DNS degli hostname in indirizzi IP, per la natura fisica della rete sottostante, interferenze o rumori di fondo ecc.
  • 300 ms per instaurare la connessione TCP
  • 200 ms per ricevere la prima porzione di codice html, quello iniziale senza interruzioni per perdita di dati
  • 200 ms di ritardo concesso al browser per il rendering della pagina.

Nei 200 ms necessari per ricevere il codice html iniziale si dovrebbe concentrare la trasmissione dei contenuti web che i professionisti SEO chiamano "above the fold", ossia quei contenuti che ricoprono lo spazio visibile in alto nella finestra del browser e a primo impatto per l'utente. Per evitare, dunque, che l'utente abbandoni il sito è fondamentale fornirgli senza perderere troppo tempo (e quindi nei tempi previsti come indicato sopra) i primi contenuti (rilevanti e possibilmente attraenti) e far in modo che, tutto il contenuto in fondo alla pagina sia eventualmente caricato in un secondo momento, magari con delle chiamate asincrone.

I 200 ms indicati da Google, in realtà non sono scelti a caso, e non sono neanche un puro capriccio degli utenti. Se da una parte l'utente pretende velocità, dall'altra ci sono limiti tecnologici che gli utenti devono inevitabilmente accettare. Citerò un valore che probabilmente nella pratica risulta già superato, ma è prassi riferirsi alle statistiche note e scientificamente accettate fin quando queste non vengono aggiorante alla situazione attuale.

Tutto nasce da un rapporto sullo stato di Internet risalente al 2010 ("The State of the Internet, 3rd Quarter 2009", Akamai Technologies, Inc., January 2010) secondo il quale si può assumere come valore medio di RTT delle connessioni TCP il valore di 200 ms.
Il Round Trip Time (o RTT) è il tempo massimo che deve impiegare un segmento TCP per viaggiare da un nodo della rete ad un altro, e restituire una notifica, o ACK al mittente per avvisare dell'avvenuta ricezione. Se l'ACK non viene ricevuto entro il tempo di RTT, il segmento di dati è andato perduto, e il mittente è obbligato a rispedirlo. Un segmento TCP è un insieme di pacchetti TCP che a loro volta possono contenere porzioni di codice html, in caso di contenuti web. In seguito a quel famoso rapporto sullo stato di salute di internet, gli esperti informatici hanno previsto di ampliare il numero di pacchetti per segmento portandoli da 2 o 3 (come erano previsti inizialmente nel protocollo TCP), a 10 adeguandoli cosi ai nuovi valori RTT medi rilevati che dimostrano un minor rischio di perdita dei pacchetti TCP.

Di fatto, se un sito web è ospitato da un server moderno che implementa questa caratteristica, potrebbe servire segmenti TCP di 10 pacchetti x 1460 byte (dimensione del campo dati di un pacchetto base TCP) = 14,6 KB. ...

Il nazionalismo sportivo

"Questa è l'italia che vogliamo" o "Realtà 1 - Pontida 0" sono frasi senza senso. L'idea di indossare una maglia azzurra e sentirsi per tale motivo automaticamente italiani è una delle tecniche di addomesticazione umana che sono state adottate per dividerci gli uni dagli altri. Al confine con la francia, la svizzera, la slovenia, l'austria se si nasce 100 metri da un lato si è italiani, se si nasce 100 metri dall'altro lato si è stranieri? O si arriva al punto di dire che le gare sportive sono patrimonio di tutta l'umanità ed espressione della vitalità e della gioia umana e si tolgono i riferimenti nazionalistici o si finisce con l'ipocrisia di dire che una nazione non è individuabile dal fenotipo maggioritario che ne caratterizza la sua popolazione nonchè dalla cultura e dalle sue consuetudini dominanti.

Oggi siamo tutti obbligati a non essere razzisti per legge (ovviamente e finalmente direi...). Ci siamo scrollati di dosso, almeno sulla carta, un'incomprensibile odio su base biologica , nata da una differenza che però non possiamo negare. Esistono altre forme di razzismo più subdole e delle quali non si vuol discutere...Siamo ipocritamente obbligati a rendere onore alla bandiera, all'inno, e a tutti i simboli nazionalistici di cui si fa largamente uso nello sport, dai mondiali all'atletica e nello stesso modo in cui lo si fa nelle parate militari, nelle ricorrenze patriottiche ed istituzionali. ...

Il codice si fece carne

La Harvard Medical School ha deciso di adottare come testo consigliato sia per docenti che studenti, il libro "Resi Umani" del Dott. Pietro Buffa e Mauro Biglino. A parte la soddisfazione di vedere un bioinformatico e ricercatore dell'Univ. di Catania sfidare il darwinismo da una parte e il creazionismo dall'altra, finalmente le "stravaganti" (o ritenute tali) ipotesi di esointerventismo e domesticazione umana cominciano a farsi strada nel mondo accademico che conta.

Guardando l'uomo con l'occhio dell'informatico, egli non è altro che una macchina biologica dotata di un software, un sistema operativo (scritto nel DNA) e il cui kernel sta nella rete neurale celebrale (talmente complessa che l'intelligenza artificiale si è data come mission quella di riprodurla!) e un hardware (il corpo). ...

L'impatto del REG. UE 2016/679 sulla Net Economy

A due giorni dall'entrata in vigore del nuovo regolamento europeo sulla privacy noto come GDPR 2016/79, sono ancora enormi le perplessità del mondo informatico, ma anche delle aziende che si sono affidate da tempo alla new economy per accrescere le loro potenzialità di vendita e di marketing. Agli albori del web, non solo il protocollo HTTP era (ed è tutt'ora) senza stato (tanto per ricordare che i cookies furono un'invenzione successiva), ma dopo si diffuse l'idea che la net economy avrebbe proiettato l'economia verso un capitalismo più snello, veloce e flessibile. Oggi, invece, ci ritroviamo sommersi in un mare di burocrazia, creata da eurocrati privi di ogni contatto con la realtà lavorativa quotidiana ed incapaci di legiferare col bisturi.

Tanto per essere chiari, le nuove regole non sono errate, anzi vanno nella direzione giusta. Non tengono conto però delle difficoltà implementative sia a livello di codice, sia a livello di organigrammi aziendali da porre in essere e "mantenere" economicamente.

Prima di tutto, è logico pensare che non vi sia differenza tra piccole realtà aziendali (piccole e medie imprese) e big data. Chi si registra in un negozio elettronico sconosciuto fornisce i propri dati personali così come accade su amazon, ebay, facebook o google. La normativa al riguardo però è piuttosto ambigua e ciò è pericoloso a livello di sanzioni. A mio parere sarebbe insensato sanzionare le aziende in egual modo perchè le sanzioni per i "big" sarebbero ridicole rapportate al loro giro d'affari, ma altrettanto determinanti per la sopravvivenza e la crescita delle PMI ...

Questioni di Sovranità

Leggo ricostruzioni per le quali nella trattativa lega-5s, la lega sia indispettita sul piano dei migrati e del rapporto con l'europa. Francamente ritengo che questi temi non siano più confinabili nell'alveo del centrodestra, cosi come i temi ecologici che fino a 20 anni fa erano argomento di sinistra o di partiti d'area (es. Verdi) sono diventati inevitabilmente di interesse collettivo (e finalmente, direi, visto che a Taranto o nella terra dei fuochi, si muore senza distinzione di colore politico).

Aggiungiamo che Mattarella vuole porre dei paletti, come accettare il premier, imporre il rispetto dei vincoli europei, o far di tutto per evitare che Salvini vada agli interni. Dobbiamo porci una domanda: Se al posto del m5s, ci fossero stati gli altri compari di destra, i Brunetta, i Berlusconi ecc. i commentatori televisivi da strapazzo se lo sarebbero chiesti se il loro programma di governo sarebbe rimasto solo un libro dei sogni, senza cambiare quei paletti? Oppure in quel caso, Mattarella si sarebbe frenato nel ricordare Einaudi e il suo ruolo non notarile ?
Il punto è che la sovranità appartiene al popolo...ma solo se il popolo è compatto e marcia tutto in un'unica direzione, e in particolare se i rappresentanti del popolo che sono chiamati a condurre, sono compatti. ...

Crisi di Governo

La forza del m5s è che, a mio parere, essendo nato inizialmente dal tradimento a sinistra, ha voluto superare la rigidità del posizionamento, proponendo indifferentemente temi di destra e temi di sinistra insieme. Non ha più distinto tra destra e sinistra, ma tra temi utili e temi inutili. Sotto questo punto di vista, apparentemente pur sembrando una forza di centro, è una forza estremista che vuole realizzare le cose senza tante frottole, a tappe forzate e con fermezza. ...