Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.0.18
    • Fix Version/s: 5.1.0.0, 5.0.19
    • Component/s: None
    • Labels:
      None

      Description

      Make it work. Make it right. Now we're making it fast.

      T5 is as fast or faster than JSP for trivial pages; for pages that render a lot (i.e., lots of loops) T5 is not keeping up. It may not (it does so much more) but we need to narrow the gap.

        Activity

        Hide
        Massimo Lusetti added a comment -

        Would you like to post use case for us to reproduce and provide more numbers?

        Show
        Massimo Lusetti added a comment - Would you like to post use case for us to reproduce and provide more numbers?
        Hide
        Christian Gorbach added a comment -

        Some thoughts about render performance, my oberservations:
        There is a significant difference how Jsp/PHPet al. render pages: the output response can be flushed during the render phase. And because of the intermediate flushing a Jsp page might "feel" faster than a T5 render page - which is served and streamed after the complete dom was constructed and processed.
        @see also http://developer.yahoo.com/performance/rules.html - flush the buffer early
        I'm not sure if T5 can address early flushing because of different render approaches.

        Show
        Christian Gorbach added a comment - Some thoughts about render performance, my oberservations: There is a significant difference how Jsp/PHPet al. render pages: the output response can be flushed during the render phase. And because of the intermediate flushing a Jsp page might "feel" faster than a T5 render page - which is served and streamed after the complete dom was constructed and processed. @see also http://developer.yahoo.com/performance/rules.html - flush the buffer early I'm not sure if T5 can address early flushing because of different render approaches.
        Hide
        Howard M. Lewis Ship added a comment -

        I'm working through a number of issues; there is no way we can compete head-to-head on extremely large pages because of the in-memory DOM. There may be an option to keep more of the DOM virtual until render time, but that may handicap attempts to do more involved post-processing of markup than what Tapestry does ... for example, it would be nice to be able to post-process the DOM to highlight search resutls and if too much of the content is virtual that won't be possible.

        Anyway, what I'm working on now is reducing the number of rendering steps by skipping render phases when they are no-ops.

        Show
        Howard M. Lewis Ship added a comment - I'm working through a number of issues; there is no way we can compete head-to-head on extremely large pages because of the in-memory DOM. There may be an option to keep more of the DOM virtual until render time, but that may handicap attempts to do more involved post-processing of markup than what Tapestry does ... for example, it would be nice to be able to post-process the DOM to highlight search resutls and if too much of the content is virtual that won't be possible. Anyway, what I'm working on now is reducing the number of rendering steps by skipping render phases when they are no-ops.
        Hide
        Christian Gorbach added a comment -

        Yes, DOM post-processing is really a powerful concept because it enables separation of concerns in the UI layer (e.g. we use it to add tracking js-snippets without polluting the template markup and - to auto-generate title/meta tags out of the content)

        Show
        Christian Gorbach added a comment - Yes, DOM post-processing is really a powerful concept because it enables separation of concerns in the UI layer (e.g. we use it to add tracking js-snippets without polluting the template markup and - to auto-generate title/meta tags out of the content)
        Hide
        Toby added a comment -

        p.s.: best solution is in general to use a CDN like Akamai and Edge-Side includes. I think there is also a ioko cache-control module for settings the cache-control-headers.
        However this is only worthwhile for large websites.

        Show
        Toby added a comment - p.s.: best solution is in general to use a CDN like Akamai and Edge-Side includes. I think there is also a ioko cache-control module for settings the cache-control-headers. However this is only worthwhile for large websites.

          People

          • Assignee:
            Howard M. Lewis Ship
            Reporter:
            Howard M. Lewis Ship
          • Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development