Resource Description Framework (RDF) is de basistaal van het Semantische Web, bedoeld om web resources en hun metadata te beschrijven, op een manier die de automatische verwerking van deze beschrijvingen toelaat.
Agenda:
- Basisbegrippen (triples...)
- RDF in verschillende formaten (XML, N3...)
- Tools en toepassingen
Van keyword tot thesaurus: publiceren van controlled vocabularies, thesauri... via SKOS, dat speciaal hiervoor ontwikkeld werd en gebruik maakt van RDF.
Resource Description Framework (RDF) is de basistaal van het Semantische Web, bedoeld om web resources en hun metadata te beschrijven, op een manier die de automatische verwerking van deze beschrijvingen toelaat.
Agenda:
- Basisbegrippen (triples...)
- RDF in verschillende formaten (XML, N3...)
- Tools en toepassingen
Van keyword tot thesaurus: publiceren van controlled vocabularies, thesauri... via SKOS, dat speciaal hiervoor ontwikkeld werd en gebruik maakt van RDF.
Voordeel halen uit zoekmachines en semantic webBart Hanssens
Hoe kan gestructureerde, semantische opmaak en machineleesbare content ervoor zorgen dat zoekmachines websites beter gaan "begrijpen".
Presentatie tijdens het "Make your website great again" event.
Voordeel halen uit zoekmachines en semantic webBart Hanssens
Hoe kan gestructureerde, semantische opmaak en machineleesbare content ervoor zorgen dat zoekmachines websites beter gaan "begrijpen".
Presentatie tijdens het "Make your website great again" event.
10. | p. 10
Persistent connectie / Keep-alive
Hergebruik TCP connectie + vermijden TCP slow start
Pipelining
Sturen serie requests zonder response af te wachten
=> nuttig voor webpagina's met veel img, js, css...
Chunked transfer
Server kan meteen beginnen sturen
=> nuttig voor dynamische gegenereerde pagina's
Transfer-Encoding ipv Content-Length header
HTTP 1.1: verbetering performantie
11. | p. 11
Meerdere requests, maar 1 response tegelijk
Connectie “bezet” tijdens laden grote (multimedia) files
=> Meerdere TCP connecties tegelijk
Typisch 4 à 8 per domein
Vb: Google Maps, 1 connectie per blok van de kaart
Zwaardere belasting servers en NAT
=> Andere oplossingen (server)
Samenvoegen meerdere CSS files (of JS) tot 1 file
Verdelen content =/= domeinen (domain sharding)
Beperking: 1 response tegelijk
12. | p. 12
Snelheid neemt nog altijd toe maar...
… round-trip time (latency) is onvermijdelijk
Signaal kan niet sneller dan lichtsnelheid
Overhead bij starten nieuwe TCP connectie
Overhead sturen bijna identieke HTTP headers
AJAX-calls, mobile...
Verminderen round-trips, overhead
14. | p. 14
Ontwikkeld door Google
2009: v1.0
2009-2014: v2, v3.x, v4-alpha
2015-2016: uitfasering naar HTTP/2
Wijzigt HTTP niet, wel manier van verzenden
Werkt als “tunnel”
(Bijna) altijd via TLS
Om door HTTP-firewalls te raken
Overzicht
18. | p. 18
Ontwikkeld door IETF
2007: httpbis working group
2012: eerste draft gebaseerd op SPDY
2015: RFC 7540
Overzicht
19. | p. 19
Binaire streams
Control / Data frames
Compressie Headers
Multiplexing
Minder TCP connecties
Request Prioritization
Server-side initiated streams
Verschil met HTTP 1.x
20. | p. 20
TLS niet verplicht
In theorie
ALPN ipv NPN
HPACK compressie ipv zlib
Minder gevoelig voor aanvallen (zoals CRIME)
Betere multiplexing
Verschil met SPDY
21. | p. 21
Ontwikkeld door Google
2011: Next Protocol Negotiation
2014: Application-Layer Protocol Negotiation (RFC 7301)
Welk protocol gebruikt TLS poort 443 ?
Protocol al gekend tijdens TLS-handshake
Bespaart roundtrip
Laat ook toe om =/= certificaat te kiezen per protocol
TLS extensie NPN / ALPN
22. | p. 22
Control / Data Frames
POST /form1 HTTP/1.1
Host: server.com
User-Agent: Mozilla/5.0
Content-Length: 100
...
FirstName=John&
LastName=Doe&
...
Control Frame
Data Frame
Version Type
Flags Length
1
(Stream ID) Data
Stream ID
Flags Length
0
Data
23. | p. 23
Index tables
Vervangen veelgebruikte headers door byte
Vb: 0x02 = method GET
Bijkomende Huffman codering
Header tables: Hpack compressie
24. | p. 24
Multiplexing
Stream 3
Header
Stream 2
Data
Stream 1
Header
Stream 2
Header
Stream 1
Header
Stream 3
Header
Stream 1
Header
Stream 1
Data
25. | p. 25
Bijhouden reeds verstuurde header info
User-Agent, Accept...
Geen vervanging voor cookies, session id…
Compatibel blijven met HTTP 1.1
Kan afgezet worden
SETTINGS frame met state size 0
Stateful header tables
26. | p. 26
Stateful header tables (2)
GET /page1 HTTP/1.1
Host: server.com
Accept: text/html
User-Agent: Mozilla/5.0
GET /page2 HTTP/1.1
Host: server.com
Accept: text/html
User-Agent: Mozilla/5.0
Control Frame
:method GET
:scheme HTTPS
:path /page1
host server.com
accept: text/html
user-agent: Mozilla/5.0
Control Frame 2
:path /page2
27. | p. 27
Geen (vervanging van) Javascript API
Bespaart roundtrip
Server hint
X-Subresources header
Suggestie van de server
Server push
X-Associated-Content header
Server stuurt content al direct mee
Vb: CSS al meesturen met HTML
Server-initiated streams
29. | p. 29
Werkelijk sneller ?
Bron: http://commons.wikimedia.org/wiki/File:Speedometer_(kmh).JPG
30. | p. 30
Header compressie maakt wel verschil
Vb: compressie cookies
Best TCP_NODELAY gebruiken
Maar domain sharding werkt nu tegen
Extra DNS lookup, TCP slow start...
Ja, maar...