Dynamic page caching for Magnolia 5.4

87
1 #mconf15 @rah003

Transcript of Dynamic page caching for Magnolia 5.4

Page 1: Dynamic page caching for Magnolia 5.4

1

#mconf15 @rah003

Page 2: Dynamic page caching for Magnolia 5.4

Magnolia Conference • Wednesday, June 10, 2015 • Basel, Switzerland, Europe, Earth, Solar System, Milky Way

Dynamic Page Caching in Magnolia 5.4

2

Jan HaderkaRoman Kovařík

#mconf15 @rah003

Page 3: Dynamic page caching for Magnolia 5.4

3

2015 Magnolia 5.4

2014 Magnolia 5.3

#mconf15 @rah003

Page 4: Dynamic page caching for Magnolia 5.4

in Magnolia 5.4

4

State of Cache

Flickr / Taro Taylor

#mconf15 @rah003

Page 5: Dynamic page caching for Magnolia 5.4

5

Cache? Just one?

FM TL Cache

Browser Cache

HttpResp Cache

Unsplash

RestReq Cache

RegistriesJR Item Cache

#mconf15 @rah003

Page 6: Dynamic page caching for Magnolia 5.4

Cache is a trade-off between perceived performance of a system, internal resource allocation and currentness of delivered data

6

Do we need more?

Flickr / Kenny Louie

#mconf15 @rah003

Page 7: Dynamic page caching for Magnolia 5.4

7

Cache implementation

Flickr / A Syn

Restructured & improved

#mconf15 @rah003

Page 8: Dynamic page caching for Magnolia 5.4

8

Cache module structure

Flickr / A Syn

#mconf15 @rah003

Page 9: Dynamic page caching for Magnolia 5.4

9

Cache implementation

Flickr / A Syn

Separate config per cache

#mconf15 @rah003

Page 10: Dynamic page caching for Magnolia 5.4

10 Flickr / A Syn

#mconf15 @rah003

Page 11: Dynamic page caching for Magnolia 5.4

11

Cache implementation

Flickr / A Syn

Site-aware CacheFilter

#mconf15 @rah003

Page 12: Dynamic page caching for Magnolia 5.4

12 Flickr / A Syn

#mconf15 @rah003

Page 13: Dynamic page caching for Magnolia 5.4

13 Flickr / A Syn

#mconf15 @rah003

Page 14: Dynamic page caching for Magnolia 5.4

14

Cache implementation

Flickr / A Syn

Cache core, impl and UI are now separate

#mconf15 @rah003

Page 15: Dynamic page caching for Magnolia 5.4

15

Cache module structure

Flickr / A Syn

#mconf15 @rah003

Page 16: Dynamic page caching for Magnolia 5.4

16

Cache implementation

Flickr / A Syn

ehCache 1.5 replaced w/ 2.10

#mconf15 @rah003

Page 17: Dynamic page caching for Magnolia 5.4

17 Flickr / A Syn

#mconf15 @rah003

ehCahe 1.5 ehCahe 2.10

Page 18: Dynamic page caching for Magnolia 5.4

18

new ehCache

Flickr / A Syn

5-10% better performance

#mconf15 @rah003

Page 19: Dynamic page caching for Magnolia 5.4

19 Flickr / A Syn

#mconf15 @rah003

Page 20: Dynamic page caching for Magnolia 5.4

20

new ehCache

Flickr / A Syn

no more disk persistence

#mconf15 @rah003

Page 21: Dynamic page caching for Magnolia 5.4

21

no disk persistence?

Flickr / A Syn

• cache is for production use • when do you restart prod server?

• on update • on crash

#mconf15 @rah003

Page 22: Dynamic page caching for Magnolia 5.4

22

no disk persistence?

Flickr / A Syn

drop-in replacement w/ persistence is BigMemory

#mconf15 @rah003

Page 23: Dynamic page caching for Magnolia 5.4

23

Cache implementation

Flickr / A Syn

new Memcached impl

#mconf15 @rah003

Page 24: Dynamic page caching for Magnolia 5.4

24

Why Memcached?

Flickr / A Syn

separate servers

#mconf15 @rah003

Page 25: Dynamic page caching for Magnolia 5.4

25 Flickr / A Syn

#mconf15 @rah003

Page 26: Dynamic page caching for Magnolia 5.4

26

Why Memcached?

Flickr / A Syn

clusterable

#mconf15 @rah003

Page 27: Dynamic page caching for Magnolia 5.4

27 Flickr / A Syn

#mconf15 @rah003

Page 28: Dynamic page caching for Magnolia 5.4

28

Why Memcached?

Flickr / A Syn

eternal

#mconf15 @rah003

Page 29: Dynamic page caching for Magnolia 5.4

29 Flickr / A Syn

#mconf15 @rah003

Page 30: Dynamic page caching for Magnolia 5.4

30

Why Memcached?

Flickr / A Syn

shareable

#mconf15 @rah003

Page 31: Dynamic page caching for Magnolia 5.4

31 Flickr / A Syn

#mconf15 @rah003

Page 32: Dynamic page caching for Magnolia 5.4

32

Why Memcached?

Flickr / A Syn

double performance when serving first request*

#mconf15 @rah003

* measured with two public instances connected to same memcached server

Page 33: Dynamic page caching for Magnolia 5.4

33 Flickr / A Syn

#mconf15 @rah003

Page 34: Dynamic page caching for Magnolia 5.4

34 Flickr / A Syn

#mconf15 @rah003

Page 35: Dynamic page caching for Magnolia 5.4

35

Cache implementation

Flickr / A Syn

new Supercache impl

#mconf15 @rah003

Page 36: Dynamic page caching for Magnolia 5.4

36

Why Supercache

Flickr / A Syn

external & persistent

#mconf15 @rah003

Page 37: Dynamic page caching for Magnolia 5.4

37

Why Supercache

Flickr / A Syn

served by load balancer

#mconf15 @rah003

Page 38: Dynamic page caching for Magnolia 5.4

38

Why Supercache

Flickr / A Syn

available for onDemand and sysEleven hosting

#mconf15 @rah003

Page 39: Dynamic page caching for Magnolia 5.4

39

Cache tools

Flickr / A Syn

new Cache browser app

#mconf15 @rah003

Page 40: Dynamic page caching for Magnolia 5.4

40 Flickr / A Syn

#mconf15 @rah003

Page 41: Dynamic page caching for Magnolia 5.4

41 Flickr / A Syn

#mconf15 @rah003

Page 42: Dynamic page caching for Magnolia 5.4

42 Flickr / A Syn

#mconf15 @rah003

Page 43: Dynamic page caching for Magnolia 5.4

43

Cache Browser

Flickr / A Syn

explore your cache

#mconf15 @rah003

Page 44: Dynamic page caching for Magnolia 5.4

44 Flickr / A Syn

#mconf15 @rah003

Page 45: Dynamic page caching for Magnolia 5.4

45

Cache Browser

Flickr / A Syn

exercise control

#mconf15 @rah003

Page 46: Dynamic page caching for Magnolia 5.4

46 Flickr / A Syn

#mconf15 @rah003

Page 47: Dynamic page caching for Magnolia 5.4

47

Cache Browser

Flickr / A Syn

one that rules them all

#mconf15 @rah003

Page 48: Dynamic page caching for Magnolia 5.4

48 Flickr / A Syn

#mconf15 @rah003

Page 49: Dynamic page caching for Magnolia 5.4

49

In summary

Flickr / A Syn

•auto-discovery •using REST •single point of control •implementation agnostic

#mconf15 @rah003

Page 50: Dynamic page caching for Magnolia 5.4

50

Cache Browser

Flickr / A Syn

#mconf15 @rah003

Demo time?

Page 51: Dynamic page caching for Magnolia 5.4

51 Flickr / A Syn

#mconf15 @rah003

Page 52: Dynamic page caching for Magnolia 5.4

52

What about personalised pages?

Flickr / A Syn

They are now cached too

#mconf15 @rah003

Page 53: Dynamic page caching for Magnolia 5.4

53

How?

Flickr / A Syn

•p13n provides variant info into the cache key •Each variant gets it’s own cache entry

#mconf15 @rah003

Page 54: Dynamic page caching for Magnolia 5.4

54

Can personalised pages share fragments?

Flickr / A Syn

Yes, you need to: • configure such fragment as dynamic • use custom cache key generator

#mconf15 @rah003

Page 55: Dynamic page caching for Magnolia 5.4

55

Why not to share by default?

Flickr / A Syn

• complexity • performance

#mconf15 @rah003

Page 56: Dynamic page caching for Magnolia 5.4

56

Advanced Cache

Flickr / A Syn

Dynamic Page Caching DPC

#mconf15 @rah003

Page 57: Dynamic page caching for Magnolia 5.4

57

Dynamic?

Flickr / A Syn

Isn’t dynamic non-cacheable?

#mconf15 @rah003

Page 58: Dynamic page caching for Magnolia 5.4

58

Dynamic?

Flickr / A Syn

“dynamic pages are composed of fragments of content with

different time-to-live”#mconf15 @rah003

Page 59: Dynamic page caching for Magnolia 5.4

59

So how do you do it?

Flickr / A Syn

Just render the page ;)

#mconf15 @rah003

Page 60: Dynamic page caching for Magnolia 5.4

60 Flickr / A Syn

#mconf15 @rah003

http://my.domain.com/travel

http://my.domain.com/travel/main/0

http://my.domain.com/travel/footer/04

http://my.domain.com/travel/footer/03http://my.domain.com/travel/footer/02

http://my.domain.com/travel/footer/01

Page 61: Dynamic page caching for Magnolia 5.4

61

Magnolia meets SiteMesh

Flickr / A Syn

#mconf15 @rah003

Page 62: Dynamic page caching for Magnolia 5.4

62

Magnolia meets SiteMesh

Flickr / A Syn

#mconf15 @rah003

Page 63: Dynamic page caching for Magnolia 5.4

63

Listen to HTML only

Flickr / A Syn

#mconf15 @rah003

Page 64: Dynamic page caching for Magnolia 5.4

64

Inject content for components

Flickr / A Syn

#mconf15 @rah003

Page 65: Dynamic page caching for Magnolia 5.4

65

What tags?

Flickr / A Syn

#mconf15 @rah003

<mgnl:injecturi target=“/demo-project/about~mgnlArea=branding~” X-Magnolia-Fragment=“sitemesh=skip, ttl=0" >

Page 66: Dynamic page caching for Magnolia 5.4

66

And those tags,

Flickr / A Syn

they got in, how exactly?

#mconf15 @rah003

Page 67: Dynamic page caching for Magnolia 5.4

67 Flickr / A Syn

#mconf15 @rah003

listener.beforeRender()

listener.afterRender()

Page 68: Dynamic page caching for Magnolia 5.4

68

Tags? Yeah, I did those!

Flickr / A Syn

#mconf15 @rah003

Home address: config:/server/rendering/engine/listeners

Page 69: Dynamic page caching for Magnolia 5.4

69

Is this configured?

Flickr / A Syn

#mconf15 @rah003

Page 70: Dynamic page caching for Magnolia 5.4

70

In summary

Flickr / A Syn

• RenderingListener will inject tags • SiteMeshFilter will replace tags with cached (or rendered entries) of content • SiteMesh lives in the chain before Cache, so it is all transparent to it

#mconf15 @rah003

Page 71: Dynamic page caching for Magnolia 5.4

71

In summary

Flickr / A Syn

• Page can consist of multiple fragments with different TTL • Upon expiration content will be re-rendered • Cache filter will cache whatever requested, fragment or full page

#mconf15 @rah003

Page 72: Dynamic page caching for Magnolia 5.4

72

Remember

Flickr / A Syn

The main goal of DPC is improving performance. This is done by caching

non-dynamic portions of a page

#mconf15 @rah003

Page 73: Dynamic page caching for Magnolia 5.4

73

BEWARE!

Flickr / A Syn

Every dynamic component needs to be requested separately. That means, more

dynamic components = more time to render.

#mconf15 @rah003

Page 74: Dynamic page caching for Magnolia 5.4

74

BEWARE!

Flickr / A Syn

more dynamic components = slower rendering Consider excluding such page from the cache!

#mconf15 @rah003

Page 75: Dynamic page caching for Magnolia 5.4

75

BEWARE!

Flickr / A Syn

Although recursive dynamic fragments are supported, it doesn't make sense to

use this feature unless nested components have different TTL.

#mconf15 @rah003

Page 76: Dynamic page caching for Magnolia 5.4

76

BEWARE!

Flickr / A Syn

Group of dynamic componentslocated next to each other

will be rendered faster in one dynamic area rather than

each separately.#mconf15 @rah003

Page 77: Dynamic page caching for Magnolia 5.4

77

Say it really works,

Flickr / A Syn

but does it actually scale?

#mconf15 @rah003

Page 78: Dynamic page caching for Magnolia 5.4

78

Performance ✔

Flickr / A Syn

#mconf15 @rah003

Page=cached SiteMesh=false

Page=cached SiteMesh=true

Snippets: none

Page=cached SiteMesh=true

Snippets: 1cached

Page=cached SiteMesh=true

Snippets: 1uncached

Page=uncached SiteMesh=false

Page=uncached SiteMesh=true

TTFB 0.00233 0.00311 0.004119 0.04095 0.04864 0.06377Total 0.00275 0.00315 0.004142 0.04143 0.06443 0.06418% TTFB 5 6 8 84 100 131% Total 4 5 6 64 100 100

Page 79: Dynamic page caching for Magnolia 5.4

79

Can same fragment be shared by multiple pages?

Flickr / A Syn

yes, but you need custom cache key/generator (just like p13n)

#mconf15 @rah003

Page 80: Dynamic page caching for Magnolia 5.4

80

#mconf15 @rah003

Thanks!

Questions?

Page 81: Dynamic page caching for Magnolia 5.4

81

Backup

Page 82: Dynamic page caching for Magnolia 5.4

82

NonCacheableEntry

Flickr / A Syn

anti-coagulant for your pipeline

#mconf15 @rah003

Page 83: Dynamic page caching for Magnolia 5.4

83

NonCacheableEntry

Flickr / A Syn

#mconf15 @rah003

Page 84: Dynamic page caching for Magnolia 5.4

PersonalizationAnalytics Commerce CRM

www Mobile Site Newsletter Landing PageApp

Integration/Inbound

Multi-Channel OutboundMulti-Channel Outbound

PersonalizationAnalytics Commerce CRM

www Mobile Site Newsletter Landing PageApp

Page 85: Dynamic page caching for Magnolia 5.4
Page 86: Dynamic page caching for Magnolia 5.4

86 Unsplash / Maja Petric

Integrations

Google Analytics

IBM Digital

Analytics

AWSJelastic

IBM Bluemix

Groovy Spring

LDAP /ADNTLM

AlfrescoCanto

Cumulus

Bright-cove

Share-point Photo-

shop

Magento

Hybris

KonaKart

IBM Smarter

Commerce

Salesforce

SugarCRM

Campaign Monitor

Click-density

Eloqua

Optimizely

Steelhouse Canvas

Atom /RSS

AddThis

FacebookFlickr

Share-This

TwitterApache

Solr

Apache OFBiz

SAP

Page 87: Dynamic page caching for Magnolia 5.4

87