Slide 1

Slide 1 text

"84%FW%BZ5PLZP:VTVLF8BEB ࣮ફΤοδϢʔεέʔε $ %FWFMPQFS"EWPDBUF!$MPVEGMBSF :VTVLF8BEB

Slide 2

Slide 2 text

"84%FW%BZ5PLZP:VTVLF8BEB .F :VTVLF8BEB %FWFMPQFS"EWPDBUF!$MPVEGMBSF $SFBUPSPG)POP $PGPVOEFSPG#PLFUF

Slide 3

Slide 3 text

"84%FW%BZ5PLZP:VTVLF8BEB ࣮ફΤοδϢʔεέʔε w ΤοδΠϯτϩμΫγϣϯ w )POPʹ͍ͭͯ w Τοδύλʔϯू w ·ͱΊ

Slide 4

Slide 4 text

"84%FW%BZ5PLZP:VTVLF8BEB ΤοδΠϯτϩμΫγϣϯ

Slide 5

Slide 5 text

"84%FW%BZ5PLZP:VTVLF8BEB Τοδͱ͸ͳʹ͔ʁ w ৗʹϢʔβʔͷۙ͘ʹ͋Δ͜ͱ w *P5ͷจ຺Ͱ࢖ΘΕΔ͜ͱ͕ଟ͍͕ͦΕ͚ͩͰ͸ͳ͍ w ͋ΒΏΔσόΠε΁ͷϨΠςϯγʔͷ௿ݮ w ੈքதͷ101Ͱ࣮ߦ͞ΕΔ w $%/͕ͩʮΩϟογϡ໨తͷ$%/ʯ͚ͩͰ͸ͳ͍

Slide 6

Slide 6 text

"84%FW%BZ5PLZP:VTVLF8BEB ΦϦδϯͱΤοδ w ΦϦδϯجຊͱͳΔαʔόʔ w ΤοδΦϦδϯͷίϯςϯπΛϢʔβʔͷۙ͘Ͱ഑৴͢Δ w ΦϦδϯ͕͋Δύλʔϯ Ϧόʔε ϓϩΩγύλʔϯ w Τοδ͚ͩͰશ͕ͯ׬݁ϑϧελοΫύλʔϯ ┌───────────┐ ┌───────┐ ┌───────────┐ │ Users │ │ Edge │ │ Origins │ └─────┬─────┘ └───┬───┘ └─────┬─────┘ │ Network │ CDN │ │<───────────────>│<───────────────>│ └─────┴─────┘ └───┴───┘ └─────┴─────┘

Slide 7

Slide 7 text

"84%FW%BZ5PLZP:VTVLF8BEB ΤοδͰ࣮ߦ͢Δܥ͕ొ৔ w "NB[PO$MPVE'SPOU'VODUJPOT w "NB[PO-BNCEB!&EHF w $MPVEGMBSF8PSLFST w 'BTUMZ$PNQVUF!&EHF w %FOP%FQMPZ w 7FSDFM&EHF'VODUJPOT w /FUMJGZ'VODUJPOT

Slide 8

Slide 8 text

"84%FW%BZ5PLZP:VTVLF8BEB 'VODUJPO8PSLFS$PNQVUFʜ w ࠓճ͸'VODUJPOͰ౷Ұ w ʮ୹͍ʯɻεΫϦϓτ͕࣮ߦ͞ΕΔ࣌ؒ͸୹͍ w ʮখ͍͞ʯɻεΫϦϓτ͸খ͘͞ͳ͍ͱ͍͚ͳ͍ w ۃ୺ͳྫ"NB[PO$MPVE'SPOU'VODUJPOT͸,#Ҏ಺ w ʮ଎͍ʯɻ$%/Ͱ࣮ߦ͞ΕΔɺ'VODUJPOͷ؀ڥ͕଎͍

Slide 9

Slide 9 text

"84%FW%BZ5PLZP:VTVLF8BEB )POPʹ͍ͭͯ

Slide 10

Slide 10 text

"84%FW%BZ5PLZP:VTVLF8BEB 6MUSBGBTUXFCGSBNFXPSLGPSUIF&EHFT IUUQTIPOPEFW

Slide 11

Slide 11 text

"84%FW%BZ5PLZP:VTVLF8BEB )POP w ΤοδͰಈ͘ w খͯ͘͞γϯϓϧͰ଎͍8FCϑϨʔϜϫʔΫ w ؆୯͚ͩͲԞ͕ਂ͍ w ͲͷΤοδͰ΋ಈ͘ w )POPͷ࣮૷ͰશͯͷϓϥοτϑΥʔϜʹରԠͰ͖Δ w ࠓճ͸ϓϥοτϑΥʔϜʹґଘͨ͘͠ͳ͍ͷͰ࠷ద

Slide 12

Slide 12 text

"84%FW%BZ5PLZP:VTVLF8BEB Ϣʔεέʔε w 8FC"1*ͷ࡞੒ w ϦόʔεϓϩΩγ w $%/ͷϑϩϯτ w ΤοδͰಈ͘ΞϓϦ w ϥΠϒϥϦ಺ͷϕʔεαʔόʔ w ϑϧελοΫΞϓϦ

Slide 13

Slide 13 text

"84%FW%BZ5PLZP:VTVLF8BEB ୭͕࢖͍ͬͯΔ͔ʁ w DEOKT"1*4FSWFS w 1PMZGJMMJP w 6MUSB w %FOP#FODINBSLT w $MPVEGMBSF#MPH w %SJWMZ w SFQFBUEFW

Slide 14

Slide 14 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 15

Slide 15 text

"84%FW%BZ5PLZP:VTVLF8BEB )POPͷಛ௃ w 6MUSBGBTU🚀5IFSPVUFS3FH&YQ3PVUFSJTSFBMMZGBTU/PUVTJOHMJOFBSMPPQT'BTU w -JHIUXFJHIU🪶5IFIPOPUJOZQSFTFUJTVOEFSL#)POPIBT[FSPEFQFOEFODJFTBOEVTFT POMZUIF8FC4UBOEBSE"1* w .VMUJSVOUJNF🌍8PSLTPO$MPVEGMBSF8PSLFST 'BTUMZ$PNQVUF!&EHF %FOP #VO -BHPO "84-BNCEB PS/PEFKT5IFTBNFDPEFSVOTPOBMMQMBUGPSNT w #BUUFSJFT*ODMVEFE🔋)POPIBTCVJMUJONJEEMFXBSF DVTUPNNJEEMFXBSF BOEUIJSEQBSUZ NJEEMFXBSF#BUUFSJFTJODMVEFE w %FMJHIUGVM%9🛠4VQFSDMFBO"1*T'JSTUDMBTT5ZQF4DSJQUTVQQPSU/PX XFWFHPU5ZQFT IUUQTIPOPEFW

Slide 16

Slide 16 text

"84%FW%BZ5PLZP:VTVLF8BEB 6MUBSBGBTU

Slide 17

Slide 17 text

"84%FW%BZ5PLZP:VTVLF8BEB $MPVEGMBSF8PSLFSTͷଞͷϑϨʔϜϫʔΫϧʔλʔͱͷൺֱ Hono x 402,820 ops/sec ±4.78% (80 runs sampled) itty-router x 212,598 ops/sec ±3.11% (87 runs sampled) sunder x 297,036 ops/sec ±4.76% (77 runs sampled) worktop x 197,345 ops/sec ±2.40% (88 runs sampled) Fastest is Hono ✨ Done in 28.06s.

Slide 18

Slide 18 text

"84%FW%BZ5PLZP:VTVLF8BEB 3FH&YQ3PVUFS w #Z!VTVBMPNB w +BWB4DSJQUքͰҰ൪଎͍ 
 ϧʔλʔ IUUQTIPOPEFWDPODFQUTCFODINBSLT

Slide 19

Slide 19 text

"84%FW%BZ5PLZP:VTVLF8BEB ϦχΞͳϧʔλʔ IUUQTIPOPEFWDPODFQUTSPVUFST

Slide 20

Slide 20 text

"84%FW%BZ5PLZP:VTVLF8BEB 3FH&YQ3PVUFSͻͱͭͷେ͖ͳਖ਼نදݱʹ͢Δ IUUQTIPOPEFWDPODFQUTSPVUFST

Slide 21

Slide 21 text

"84%FW%BZ5PLZP:VTVLF8BEB 5SJF3PVUFSҰ൪࠷ॳʹ࡞ΒΕͨ IUUQTIPOPEFWDPODFQUTSPVUFST

Slide 22

Slide 22 text

"84%FW%BZ5PLZP:VTVLF8BEB -JOFBS3PVUFS w #Z!VTVBMPNBɺϧʔτͷొ࿥ΛؚΊͯ଎͍ 
 • GET /very/deeply/nested/route/hello/there ----------------------------------------------------- ----------------------------- RegExpRouter 34.25 µs/iter (26.29 µs … 670.17 µs) 34.58 µs 49.13 µs 56.5 µs TrieRouter 9.05 µs/iter (8.91 µs … 9.2 µs) 9.09 µs 9.2 µs 9.2 µs LinearRouter 1.6 µs/iter (1.53 µs … 1.75 µs) 1.61 µs 1.75 µs 1.75 µs MedleyRouter 4.43 µs/iter (4.33 µs … 4.54 µs) 4.45 µs 4.54 µs 4.54 µs FindMyWay 62.36 µs/iter (46.25 µs … 1.69 ms) 61.79 µs 78.67 µs 87.42 µs KoaTreeRouter 3.69 µs/iter (3.53 µs … 3.9 µs) 3.72 µs 3.9 µs 3.9 µs TrekRouter 5.79 µs/iter (5.64 µs … 5.93 µs) 5.83 µs 5.93 µs 5.93 µs summary for GET /very/deeply/nested/route/hello/there LinearRouter 2.31x faster than KoaTreeRouter 2.77x faster than MedleyRouter 3.63x faster than TrekRouter 5.67x faster than TrieRouter 21.46x faster than RegExpRouter 39.08x faster than FindMyWay IUUQTHJUIVCDPNIPOPKTIPOPQVMM

Slide 23

Slide 23 text

"84%FW%BZ5PLZP:VTVLF8BEB ϧʔλʔҎ֎ʹ଎͘͢Δ޻෉ w ΫΤϦύϥϜͷύʔεɺϔομʔͷઃఆͷ࠷దԽ w εΫϥονͰॻ͘ΑΓ΋Α͍ w ϓϩΩγͰ΋ੵۃతʹ࢖͍ͬͯͩ͘͞

Slide 24

Slide 24 text

"84%FW%BZ5PLZP:VTVLF8BEB ϑϨʔϜϫʔΫΛ࢖Θͳ͍৔߹

Slide 25

Slide 25 text

"84%FW%BZ5PLZP:VTVLF8BEB )POPͷ৔߹Ϋϥεੜ੒ͷΦʔόʔϔου͕ͳ͍

Slide 26

Slide 26 text

"84%FW%BZ5PLZP:VTVLF8BEB -JHIUXFJHIU

Slide 27

Slide 27 text

"84%FW%BZ5PLZP:VTVLF8BEB 1BUUFSO3PVUFSͷΈΛ࢖͏ͱ,# &YQSFTT͸,# $ npx wrangler dev --minify ./src/index.ts ⛅ wrangler 2.20.0 -------------------- ⬣ Listening at http://0.0.0.0:8787 - http://127.0.0.1:8787 - http://192.168.128.165:8787 Total Upload: 11.47 KiB / gzip: 4.34 KiB

Slide 28

Slide 28 text

"84%FW%BZ5PLZP:VTVLF8BEB )POPͷ ϧʔλʔͱϓϦηοτ

Slide 29

Slide 29 text

"84%FW%BZ5PLZP:VTVLF8BEB ͭͷϧʔλʔ w 3FH&YQ3PVUFS w 5SJF3PVUFS w 4NBSU3PVUFS w -JOFBS3PVUFS w 1BUUFSO3PVUFS 4NBSU3PVUFS 3FH&YQ3PVUFSΛ༏ઌ͢Δ͕αϙʔτ͠ͳ͍ύε͕͋Ε͹5SJF3PVUFSΛ࢖͏

Slide 30

Slide 30 text

"84%FW%BZ5PLZP:VTVLF8BEB ͭͷϓϦηοτ w AIPOPA w AIPOPRVJDLA w AIPOPUJOZA

Slide 31

Slide 31 text

"84%FW%BZ5PLZP:VTVLF8BEB AIPOPA

Slide 32

Slide 32 text

"84%FW%BZ5PLZP:VTVLF8BEB AIPOPRVJDLA

Slide 33

Slide 33 text

"84%FW%BZ5PLZP:VTVLF8BEB AIPOPUJOZA

Slide 34

Slide 34 text

"84%FW%BZ5PLZP:VTVLF8BEB ͲͷϓϦηοτΛ࢖͑͹͍͍͔ʁ w AIPOPA w ΄ͱΜͲͷϢʔεέʔεʹ͓͢͢Ί w %FOPɺ#VOɺ/PEFKTͰߏங͞Εͨৗறܕͷαʔόʔʹ࠷ద w $MPVEGMBSF8PSLFSTɺ%FOP%FQMPZɺ-BHPOͳͲͷ؀ڥͰ΋ར༻ՄೳʢWΞΠιϨʔτΛར༻ʣ w ىಈޙͷύϑΥʔϚϯε͕ߴ͍ w AIPOPRVJDLA w ϦΫΤετ͝ͱʹΞϓϦέʔγϣϯ͕ॳظԽ͞ΕΔ؀ڥ޲͚ w 'BTUMZ$PNQVUF!&EHFͳͲͰਪ঑ w "84-BNCEBͷίʔϧυελʔτʹ΋ద͍ͯ͠Δ w AIPOPUJOZA w Ϧιʔε͕ݶΒΕ͍ͯΔ؀ڥ޲͚ w ࠷খͷϧʔλʔύοέʔδ

Slide 35

Slide 35 text

"84%FW%BZ5PLZP:VTVLF8BEB .VMUJSVOUJNF

Slide 36

Slide 36 text

"84%FW%BZ5PLZP:VTVLF8BEB +BWB4DSJQUͳΒͲ͜Ͱ΋ಈ͘ w $MPVEGMBSF8PSLFST w 'BTUMZ$PNQVUF!&EHF w %FOP w #VO w -BHPO w /FYUKT!7FSDFM w /FYUKT!/PEFKT w "84-BNCEB w -BNCEB!&EHF w /PEFKT

Slide 37

Slide 37 text

"84%FW%BZ5PLZP:VTVLF8BEB 8FC4UBOEBSE"1*ͷ͓͔͛ w 4FSWJDF8PSLFSͰಋೖ͞Εͨ w 'FUDI3FRVFTU3FTQPOTF63-63-4FBSDI1BSBNͳͲ w 8JOUFS$($MPVEGMBSF %FOP /PEFKT 4IPQJGZ #VO 'BTUMZͳͲ w )POP͕Ͳ͜Ͱ΋ಈ͘ͷ͸8FC4UBOEBSEͷ͓͔͛

Slide 38

Slide 38 text

"84%FW%BZ5PLZP:VTVLF8BEB 3FRVFTU63-3FTQPOTF )POP͸͜ΕΛԠ༻ ֎෦ͷϥΠϒϥϦʹ͸ґଘ͍ͯ͠ͳ͍

Slide 39

Slide 39 text

"84%FW%BZ5PLZP:VTVLF8BEB ͢΂ͯͷϥϯλΠϜϓϥοτϑΥʔϜͰ ΄΅ಉ͡ίʔυ͕ಈ͘

Slide 40

Slide 40 text

"84%FW%BZ5PLZP:VTVLF8BEB XPSLFSE#VO

Slide 41

Slide 41 text

"84%FW%BZ5PLZP:VTVLF8BEB 'BTUMZ$PNQVUF!&EHF

Slide 42

Slide 42 text

"84%FW%BZ5PLZP:VTVLF8BEB -BHPO

Slide 43

Slide 43 text

"84%FW%BZ5PLZP:VTVLF8BEB %FOP

Slide 44

Slide 44 text

"84%FW%BZ5PLZP:VTVLF8BEB /PEFKT

Slide 45

Slide 45 text

"84%FW%BZ5PLZP:VTVLF8BEB "84-BNCEB

Slide 46

Slide 46 text

"84%FW%BZ5PLZP:VTVLF8BEB $MPVEGMBSF1BHFT

Slide 47

Slide 47 text

"84%FW%BZ5PLZP:VTVLF8BEB /FYUKT

Slide 48

Slide 48 text

"84%FW%BZ5PLZP:VTVLF8BEB Ͳ͜Ͱ΋ಈ͘ҙຯ w ϓϥοτϑΥʔϜґଘ͕ͳ͍૬ޓӡ༻Մೳ w ͻͱͭͷ͜ͱΛ֮͑Ε͹Α͍ w ଟ͘ͷϢʔβʔ͕࢖͏͜ͱʹͳΔ)POPࣗମͷ඼্࣭͕͕Δ

Slide 49

Slide 49 text

"84%FW%BZ5PLZP:VTVLF8BEB #BUUFSJFT*ODMVEFE

Slide 50

Slide 50 text

"84%FW%BZ5PLZP:VTVLF8BEB ϛυϧ΢ΣΞ w ϏϧτΠϯɾϛυϧ΢ΣΞ w SEQBSUZɾϛυϧ΢ΣΞ w ΧελϜɾϛυϧ΢ΣΞ

Slide 51

Slide 51 text

"84%FW%BZ5PLZP:VTVLF8BEB ϏϧτΠϯɾϛυϧ΢ΣΞ w #BTJD"VUIFOUJDBUJPO w #FBSFS"VUIFOUJDBUJPO w $BDIF w $PNQSFTT w $PPLJF w $034 w &5BH w IUNM w +49 w +85"VUIFOUJDBUJPO w -PHHFS w 1SFUUZ+40/ &5BHϛυϧ΢ΣΞͱϩΨʔΛશͯͷύεʹదԠ͢Δ

Slide 52

Slide 52 text

"84%FW%BZ5PLZP:VTVLF8BEB SEQBSUZɾϛυϧ΢ΣΞ w 'JSFCBTF"VUI w (SBQI2-4FSWFS w 2XJL$JUZ w 4FOUSZ w U31$4FSWFS w 5ZQF#PY7BMJEBUPS w ;PE7BMJEBUPS 4FOUSZϛυϧ΢ΣΞΛ࢖͏

Slide 53

Slide 53 text

"84%FW%BZ5PLZP:VTVLF8BEB ΧελϜɾϛυϧ΢ΣΞ Ϣʔβʔ͕ࣗ਎Ͱϛυϧ΢ΣΞΛ࡞ΕΔ

Slide 54

Slide 54 text

"84%FW%BZ5PLZP:VTVLF8BEB ΦχΦϯετϥΫνϟ

Slide 55

Slide 55 text

"84%FW%BZ5PLZP:VTVLF8BEB ϛυϧ΢ΣΞͰϓϩΩγΛ࣮૷͢Δ w ϛυϧ΢ΣΞ͸ϦΫΤετͱϨεϙϯεͷલޙΛѻ͑Δ w ΦϦδϯ΁ͷϦΫΤετϨεϙϯεͷલޙ

Slide 56

Slide 56 text

"84%FW%BZ5PLZP:VTVLF8BEB ϛυϧ΢ΣΞͷҖྗ w ඞཁͳ࣌ʹJNQPSU͢ΔόϯυϧαΠζΛখ͘͞อͭ w ೉͍͜͠ͱΛ؆୯ʹ w Α͘ςετ͞Εͨϛυϧ΢ΣΞΛ࢖͑Δ w ࠶ར༻Մೳ w ϛυϧ΢ΣΞΛଋͶΔ͜ͱͰ༷ʑͳػೳΛ࣮ݱ͢Δ

Slide 57

Slide 57 text

"84%FW%BZ5PLZP:VTVLF8BEB %FMJHIUGVM%9

Slide 58

Slide 58 text

"84%FW%BZ5PLZP:VTVLF8BEB 5ZQF4DSJQU

Slide 59

Slide 59 text

"84%FW%BZ5PLZP:VTVLF8BEB 31$

Slide 60

Slide 60 text

"84%FW%BZ5PLZP:VTVLF8BEB )POP·ͱΊ w ଎͍ w খ͍͞ w Ͳ͜Ͱ΋ಈ͘ w ϛυϧ΢ΣΞ w ։ൃମݧ͕Α͍

Slide 61

Slide 61 text

"84%FW%BZ5PLZP:VTVLF8BEB Τοδύλʔϯू

Slide 62

Slide 62 text

"84%FW%BZ5PLZP:VTVLF8BEB Τοδ׆༻ͷϢʔεέʔεͱ࣮૷ w ࣮૷ʹ͸)POPΛ࢖༻ͲͷϓϥοτϑΥʔϜͰ΋ϩδοΫ͸ಉ͡ w ࠓճ͸ΦϦδϯ͕͋ΔϦόʔεϓϩΩγΛத৺ʹ w ΦϦδϯΛ׆͔͢ w ϑϧελοΫͩͱయܕతͳΞϓϦέʔγϣϯߏஙͷ࿩ʹͳΔ w ΦϦδϯ͸υϝΠϯͷ࣮૷ʹूத͢Δ w ແବͳΞΫηε͔ΒɺΦϦδϯ͔ΒΛԕ͚͟Δ w $PEFPWFSDPOGJHVSBUJPOઃఆΑΓίʔυ w ؅ཧը໘ɺ7$-Ͱ΍͍ͬͯ͜ͱΛ'VODUJPOͰ΍Δ

Slide 63

Slide 63 text

"84%FW%BZ5PLZP:VTVLF8BEB ϓϩΩγͷ࣮૷ ϦΫΤετ͕དྷΔ c W 'VODUJPOT͕ϦΫΤετΛॲཧ͢Δ c W ΦϦδϯΛGFUDI͢Δ c W 'VODUJPOT͕ϨεϙϯεΛॲཧ͢Δ c W ϨεϙϯεΛฦ͢

Slide 64

Slide 64 text

"84%FW%BZ5PLZP:VTVLF8BEB 8FC4UBOEBSEʹΑΔ࣮૷ 8FC4UBOEBSEͰ࣮૷Ͱ͖Δ )POPͷ಺෦Ͱ΍͍ͬͯΔ͜ͱ

Slide 65

Slide 65 text

"84%FW%BZ5PLZP:VTVLF8BEB Ϩεϙϯεϔομͷ௥Ճ࡟আ w A91PXFSFE#ZA w A93FTQPOTF5JNFA w ηΩϡϦςΟʹؔ܎͢Δϔομ - Content-Security-Policy: A powerful allow-list of what can happen on your page which mitigates many attacks - Cross-Origin-Opener-Policy: Helps process-isolate your page - Cross-Origin-Resource-Policy: Blocks others from loading your resources cross-origin - Origin-Agent-Cluster: Changes process isolation to be origin-based - Referrer-Policy: Controls the Referer header - Strict-Transport-Security: Tells browsers to prefer HTTPS - X-Content-Type-Options: Avoids MIME sniffing - X-DNS-Prefetch-Control: Controls DNS prefetching - X-Download-Options: Forces downloads to be saved (Internet Explorer only) - X-Frame-Options: Legacy header that mitigates clickjacking attacks - X-Permitted-Cross-Domain-Policies: Controls cross-domain behavior for Adobe products, like Acrobat - X-Powered-By: Info about the web server. Removed because it could be used in simple attacks - X-XSS-Protection: Legacy header that tries to mitigate XSS attacks, but makes things worse, so Helmet disables it

Slide 66

Slide 66 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 67

Slide 67 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 68

Slide 68 text

"84%FW%BZ5PLZP:VTVLF8BEB $034 w $SPTT0SJHJO3FTPVSDF4IBSJOH w αʔόʔଆͷ࣮૷ CORS: Cross-Origin Resource Sharing 1. ҟͳΔΦϦδϯؒ௨৴ΛՄೳʹ͢Δ 2. ϒϥ΢βͷಉҰΦϦδϯϙϦγʔ੍໿Λ؇࿨͢Δ 3. CORS͸αʔόʔଆͰઃఆ͠ରԠ͢Δ 4. ϦΫΤετ͸ڐՄ͞ΕͨΦϦδϯ͔ΒͷΈૹ৴͢Δ 5. αΠτؒεΫϦϓτ߈ܸ͔Βอޢ͢Δ

Slide 69

Slide 69 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 70

Slide 70 text

"84%FW%BZ5PLZP:VTVLF8BEB ೝূ w #BTJDೝূ w #FBSFSೝূ w +85ೝূ

Slide 71

Slide 71 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 72

Slide 72 text

"84%FW%BZ5PLZP:VTVLF8BEB &5BHͷ௥Ճ &5BH&OUJUZ5BH ϨεϙϯεͷόʔδϣϯΛࣝผ͢Δ σʔλมߋ࣌ʹ৽͍͠&5BHΛੜ੒͢Δ Ωϟογϡ੍ޚΛॿ͚ɺଳҬ෯Λઅ໿͢Δ ڧ͍ͱऑ͍ͷͭͷܗ͕ࣜଘࡏ͢Δ ৚݅෇͖ϦΫΤετͰ࢖༻͞ΕΔ

Slide 73

Slide 73 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 74

Slide 74 text

"84%FW%BZ5PLZP:VTVLF8BEB ϦμΠϨΫτ w ΦϦδϯ͕ඞཁͳ͍

Slide 75

Slide 75 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 76

Slide 76 text

"84%FW%BZ5PLZP:VTVLF8BEB ΦϦδϯͷৼΓ෼͚ http://example.com/assets/images/foo.png => http://imagehost/foo.png http://example.com/assets/fonts/bar.woff => http://fonthost/bar.woff w ΞηοτΛϝΠϯͷΦϦδϯͱ͸ผͷετϨʔδʹอଘ w ը૾ͱϑΥϯτͰϗετ͕ҧ͏ w ಉ͡υϝΠϯͷύεͰද͍ࣔͨ͠

Slide 77

Slide 77 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 78

Slide 78 text

"84%FW%BZ5PLZP:VTVLF8BEB Ωϟογϡ w $BDIF"1*XPSLFSE%FOPͰαϙʔτ w Ωϟογϡͷ੍ޚ͕೉͍͠ޙड़ w جຊతʹ͸55-શඈ͹͠ͰରԠ

Slide 79

Slide 79 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 80

Slide 80 text

"84%FW%BZ5PLZP:VTVLF8BEB σόΠεผͷΩϟογϡ w 1$ͱϞόΠϧͰϖʔδͷग़͠෼͚Λͯ͠ΔΞϓϦʹΩϟογϡΛೖΕΔ ΩϟογϡΩʔ͕ҰͭʹͳΔ w εϚϗͰΞΫηεͯ͠Δͷʹ1$ͷϖʔδ͕ग़Δ w ΩϟογϡΩʔΛʮ63-σόΠε໊ʯʹ͢Δ

Slide 81

Slide 81 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 82

Slide 82 text

"84%FW%BZ5PLZP:VTVLF8BEB )5.-λάͷஔ׵ w ྫAPMEIPTUA͔ΒAOFXIPTUA΁Ҿͬӽͨ͠ w ϦϯΫΛॻ͖׵͍͑ͨɺJNHTSDΛॻ͖׵͍͑ͨ w ྫJOࠃࡍԽରԠ w )5.-3FXSJUFS΍ਖ਼نදݱͳͲ

Slide 83

Slide 83 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 84

Slide 84 text

"84%FW%BZ5PLZP:VTVLF8BEB ϗοτϦϯΫېࢭϦϑΝϥฤ w ௚ϦϯΫϗοτϦϯΫېࢭ w ϦϑΝϥΛ࢖ͬͨྫ w ϦϑΝϥ͕ࣗαΠτҎ֎ͩͬͨΒΛฦ͢ w ϒϥ΢βͰϦϑΝϥͷૹग़ΛΦϑʹ͍ͯͨ͠ΒݟΕͳ͍

Slide 85

Slide 85 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 86

Slide 86 text

"84%FW%BZ5PLZP:VTVLF8BEB ϗοτϦϯΫېࢭ4JHOFE3FRVFTUฤ w ༗ޮظݶ෇͖ͷ63-Λੜ੒ɺݕূ͢Δ w ੜ੒ଆ ੜ੒ͱݕূͰγʔΫϨοτΩʔΛڞ༗͢Δɻ 63-ύεͱ༗ޮظݶΛσʔλͱ͠ɺγʔΫϨοτΩʔͰΩʔΛੜ੒͢Δɻ 63-ʹΩʔͱ༗ޮظݶΛΫΤϦύϥϝʔλͱͯ͠௥Ճ͢Δɻ w ݕূଆ 63-ΫΤϦύϥϝʔλ͔ΒΩʔͱ༗ޮظݶΛऔΓग़͢ɻ ΩʔΛγʔΫϨοτΩʔΛݩʹݕূ͢Δɻ ༗ޮظݶΛݕূ͢Δɻ ༗ޮͰ͋Ε͹ɺϓϩΩγ͢Δɻ

Slide 87

Slide 87 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 88

Slide 88 text

"84%FW%BZ5PLZP:VTVLF8BEB ಈతίϯςϯπͷΩϟογϡ w Ξηοτ΍ߋ৽ස౓ͷগͳ͍)5.-͸55-ͱ໌ࣔతͳύʔδ w ߋ৽ස౓ͷߴ͍)5.-΍"1*͸Ωϟογϡ͠ʹ͍͘ w ύʔδͷλΠϛϯάɺ৔ॴ͕೺Ѳ͠ʹ͍͘ w σʔλੜ੒ʹ͕͔͔࣌ؒΔ৔߹٧Ή5IVOEFSJOH)FSE໰୊ w Ωϟογϡ͕ͳ͍ঢ়ଶͰΞΫηε͕དྷͯɺେྔͷϖʔδੜ੒͕૸Δ

Slide 89

Slide 89 text

"84%FW%BZ5PLZP:VTVLF8BEB 4UBMF8IJMF3FWBMJEBUF483 w Ωϟογϡ͕੾ΕͨΒɺόοΫάϥ΢ϯυͰΩϟογϡΛ໰͍߹Θͤͭͭ ʢWBMJEBUFʣɺͦͷؒ͸ݹ͍ΩϟογϡʢTUBMFʣΛฦͯ͠ɺίϯςϯπ͕ ฦ͖ͬͯͨΒΩϟογϡΛߋ৽͢Δ w ͜ΕΛΤοδͰͷ'VODUJPOͰ࣮ݱ͢Δ w ύʔδͷλΠϛϯά͸55-͔ߋ৽ܥ͕૸ͬͨ࣌ʹߦͬͯ΋Α͍

Slide 90

Slide 90 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 91

Slide 91 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 92

Slide 92 text

"84%FW%BZ5PLZP:VTVLF8BEB ΤοδϢʔεέʔεͦͷଞ w 63-ਖ਼نԽ w ϘοτϓϩςΫγϣϯ w ϩάͷऩू w 0(1ͷ࡞੒ɺ഑৴ w &BSMZ)JOUT഑৴ w ϨʔτϦϛοτ w ϑϧελοΫΞϓϦ

Slide 93

Slide 93 text

"84%FW%BZ5PLZP:VTVLF8BEB ςετʹ͍ͭͯ w 3FRVFTU3FTQPOTFΛ࠶ݱͯ͠ςετͰ͖Δ w ݁ߏ͜ΕͰे෼ w ΦϦδϯࠐΈͷςετ͕՝୊ w ΦϯϥΠϯͰςετ w ΦϦδϯΛϞοΫ͢Δ

Slide 94

Slide 94 text

"84%FW%BZ5PLZP:VTVLF8BEB

Slide 95

Slide 95 text

"84%FW%BZ5PLZP:VTVLF8BEB ΤοδͰϦόʔεϓϩΩγΛ΍Δҙຯ w $PEFPWFSDPOGJHVSBUJPOίʔυͰ؅ཧͰ͖Δ w ςετ͕͠΍͍͢ w ࠶ར༻ੑ͕͋Δϛυϧ΢ΣΞ w ઃఆͰ͸Ͱ͖ͳ͍͜ͱ͕Ͱ͖Δ w ࡉ͔͍Ωϟογϡͷ੍ޚɺ)5.-ͷॻ͖׵͑FUD w ͱ͖ͬͭ΍͍͢/PU7$-৬ਓ

Slide 96

Slide 96 text

"84%FW%BZ5PLZP:VTVLF8BEB ·ͱΊ

Slide 97

Slide 97 text

"84%FW%BZ5PLZP:VTVLF8BEB ࣮ફΤοδϢʔεέʔε w Τοδͷಛ௃ w খ͍͞'VODUJPO͕୹͍࣌ؒɺߴ଎ʹಈ͘ w )POPͷ঺հ w ύϑΥʔϚϯεͷ޲্ɺϛυϧ΢ΣΞͷར༻ w ֤ϓϥοτϑΥʔϜͷࠩҟΛຒΊΔ w Τοδύλʔϯ w ΦϦδϯΛ׆͔͢

Slide 98

Slide 98 text

"84%FW%BZ5PLZP:VTVLF8BEB ͓͠·͍