Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
APACHE SLING & FRIENDS TECH MEETUP
BERLIN, 26-28 SEPTEMBER 2012
Sling Dynamic Include
declarative caching of partially per...
adaptTo() 2012
 Our CQ site contains a lot of static pages
 Therefore they can be cached
 Unfortunatelly, there is one ...
adaptTo() 2012 3
Geometrixx example – userinfo component
adaptTo() 2012
 Dispatcher is great in caching static pages
 However, even a small dynamic component
makes it useless
 ...
adaptTo() 2012
 Dispatcher should cache site with some
static placeholder
 We replace placeholder with the dynamic
conte...
adaptTo() 2012
 So, we can place some include tag which
will be replaced with the component
 Include tag types available...
adaptTo() 2012
 AJAX is a common solution here
 Drawbacks
 problems with components containing JS
 may not work (smoot...
adaptTo() 2012
 Advantages over AJAX
 Transparent for the browser / search engine
 Drawbacks
 requires developers to h...
adaptTo() 2012
 Java servlet filter
 It affects components with specific
resource types only
 Replaces it with:
 SSI
...
adaptTo() 2012 10
SDI – how does it work?
Filter the include sub-request
/content/…/_jcr_content/carousel.html
<!--include...
adaptTo() 2012
 Approach transparent for the components
 and developers as well
 Configured using OSGi console
 can be...
adaptTo() 2012
 Nonexisting (or synthetic) resource – resource without
any JCR node
 JSP file excerpt:
<cq:include
path=...
adaptTo() 2012 13
Performance comparison
0
200
400
600
800
1000
1200
1400
1 2 3 4 5 6 7 8 9 10
Dispatcher+SDI
Cache disabl...
adaptTo() 2012
 SDI is available on our Github
 https://github.com/Cognifide
 Any questions?
14
Q&A
adaptTo() 2012 15
Thanks
Próxima SlideShare
Cargando en…5
×

Sling Dynamic Include

3.780 visualizaciones

Publicado el

Declarative caching of partially personalized pages.

Publicado en: Tecnología
  • Inicia sesión para ver los comentarios

Sling Dynamic Include

  1. 1. APACHE SLING & FRIENDS TECH MEETUP BERLIN, 26-28 SEPTEMBER 2012 Sling Dynamic Include declarative caching of partially personalized pages Tomasz Rękawek
  2. 2. adaptTo() 2012  Our CQ site contains a lot of static pages  Therefore they can be cached  Unfortunatelly, there is one small dynamic component  Current user info  Latest news  Random article  External content  ... 2 Introduction
  3. 3. adaptTo() 2012 3 Geometrixx example – userinfo component
  4. 4. adaptTo() 2012  Dispatcher is great in caching static pages  However, even a small dynamic component makes it useless  We want to cache the almost whole page  Selected component should be included dynamically, directly from the CQ 4 Problem
  5. 5. adaptTo() 2012  Dispatcher should cache site with some static placeholder  We replace placeholder with the dynamic content after dispatcher serves the site  Helpful Sling feature: we can render only a part of the page using it URL 5 Solution http://localhost:4503/content/geometrixx/en/_jcr_content/userinfo.html
  6. 6. adaptTo() 2012  So, we can place some include tag which will be replaced with the component  Include tag types available on different service layers between dispatcher and the client: 6 Solution CQ instance Dispatcher Apache Content delivery network Browser Server side includes Edge site includes AJAX
  7. 7. adaptTo() 2012  AJAX is a common solution here  Drawbacks  problems with components containing JS  may not work (smoothly or at all) on mobiles  not SEO friendly  slows down the site  flickering components 7 AJAX
  8. 8. adaptTo() 2012  Advantages over AJAX  Transparent for the browser / search engine  Drawbacks  requires developers to have configured additional servers (Apache or Varnish)  developers should be aware of the environment  components should be written in a special way 8 SSI/ESI
  9. 9. adaptTo() 2012  Java servlet filter  It affects components with specific resource types only  Replaces it with:  SSI  ESI  AJAX include markup 9 Sling Dynamic Include
  10. 10. adaptTo() 2012 10 SDI – how does it work? Filter the include sub-request /content/…/_jcr_content/carousel.html <!--include /content/…/carousel.nocache.html--> Content Pass it Get page Content Component content Filter the request Request component /content/…/_jcr_content/carousel.nocache.html httpd SDI
  11. 11. adaptTo() 2012  Approach transparent for the components  and developers as well  Configured using OSGi console  can be disabled on the author / developers instances  include tag type can be easy changed  Support for the nonexisting resources 11 SDI – advantages
  12. 12. adaptTo() 2012  Nonexisting (or synthetic) resource – resource without any JCR node  JSP file excerpt: <cq:include path="footer" resourceType="foundation/components/footer"/>  But footer node doesn’t exist  Component is rendered normally, because it doesn’t need any data  However, requesting http://.../_jcr_content/footer.html will return 404  SDI is able to recognize nonexisting resources and render them 12 Nonexisting resources
  13. 13. adaptTo() 2012 13 Performance comparison 0 200 400 600 800 1000 1200 1400 1 2 3 4 5 6 7 8 9 10 Dispatcher+SDI Cache disabled Concurrent requests Request/s  Number of requests per second vs number of concurrent requests  Geometrixx site  SDI includes userinfo component  8 threads: 1265 req/s with and 131 req/s without SDI  Basically, it’s a difference between rendering the whole page and a small part of it
  14. 14. adaptTo() 2012  SDI is available on our Github  https://github.com/Cognifide  Any questions? 14 Q&A
  15. 15. adaptTo() 2012 15 Thanks

×