There will be some additional "chatter"; short fast requests. I will look
to offset that by allowing JavaScriptStacks to import modules as well as
libraries.


On Mon, Apr 8, 2013 at 6:43 PM, Bob Harner <bobhar...@gmail.com> wrote:

> Doesn't the switch to ETags for modules make for much chattier web apps,
> with lots more "conditional GET" requests for JS modules coming in after
> every page request?
>
> In any case, good riddance to the application version numbers.
>
> On Mon, Apr 8, 2013 at 9:10 PM, Howard Lewis Ship <hls...@gmail.com>
> wrote:
>
> > With the ETag support in place, there's no longer any need for the module
> > asset URLs to have a checksum or version number; they are no longer
> given a
> > far-future expires header.
> >
> > URLs (by default) look like "/modules/t5/core/dom.js" (where the module
> > name is t5/core/dom).
> >
> > The application version number is no longer used in any URLs; it now
> exists
> > just for documentation purposes (its written to the console at startup
> and
> > in the exception report). This is good news, because you could screw
> > yourself by deploying your application and NOT changing the version
> number
> > (in 5.3.6).
> >
> > Very happy about this ... next up, thoughts on cometd/server-push
> support?
> >
> >
> >
> > On Tue, Mar 12, 2013 at 11:09 AM, Howard Lewis Ship <hls...@gmail.com
> > >wrote:
> >
> > >
> > >
> > > On Tue, Mar 12, 2013 at 5:37 AM, Dmitry Gusev <dmitry.gu...@gmail.com
> > >wrote:
> > >
> > >> On Tue, Mar 12, 2013 at 12:35 AM, Howard Lewis Ship <hls...@gmail.com
> > >> >wrote:
> > >>
> > >> > I've been working, a few hours a week, on getting per-asset
> checksums
> > >> into
> > >> > URLs.
> > >> >
> > >> > Some parts of this have been a challenge to accomplish without
> > >> completely
> > >> > breaking the Asset interface and a bunch of public services.
> > >> >
> > >> > For ordinary assets, it's pretty easy ... but for aggregated
> > JavaScript
> > >> > libraries its been a pain that's affected a bunch of stuff.
> > >> >
> > >> > CSS files are now rewritten, since relative URLs will be broken by
> the
> > >> > addition of the checksum. I have a first (but not final) pass at
> this,
> > >>
> > >> where url() patterns in the CSS are converted into complete paths.
> This
> > >> > also opens the door to CSS aggregation as well as JavaScript
> > >> aggregation.
> > >> >
> > >> >
> > >> It depends on where you put the checksum.
> > >> If you put it as a GET parameter - then no relative URLs will be
> broken.
> > >>
> > >> Have you read my blog post about Tapestry5 checksums in assets?
> > >>
> > >>
> >
> http://dmitrygusev.blogspot.ru/2012/03/serving-tapestry5-assets-as-static.html
> > >
> > >
> > > I'll read this shortly. I've generally assumed that URLs with query
> > > parameters are less likely to be cached in the browser, or served
> > properly
> > > by intermediate (reverse proxy) servers, but I haven't done the
> research.
> > >
> > >
> > >>
> > >>
> > >> > I still don't have a great solution for JavaScript modules;
> > >> RequireJS/AMD
> > >> > expect that there's a common root folder name (such as
> > >> "/assets/modules/"),
> > >> > and module "a/b" is simply "*root*/a/b.js". For individual modules,
> > you
> > >> can
> > >> > write your own overrides.  In fact, Tapestry has to strip off the
> > ".js'
> > >> > part (which is hard-wired by RequireJS) because the actual
> server-side
> > >> > resource could be CoffeeScript or some other language that compiles
> to
> > >> > JavaScript.
> > >> >
> > >> > Short of iterating all server-side module files and writing a
> > RequireJS
> > >> > config for each one (mapping each name to a URL with an embedded
> > >> checksum),
> > >> > there isn't a great solution.  Alternately, something could iterate
> > all
> > >> the
> > >> > server-side modules and built a composite checksum, but there are at
> > >> least
> > >> > a couple of virtual modules generated at runtime (and locale
> specific
> > >> for
> > >> > extra kicks).
> > >> >
> > >> > Modules may have to stay on the 5.3 approach: using the application
> > >> version
> > >> > number for everything.
> > >> >
> > >> > Finding the sweet spot where assets of all kinds (CSS, JavaScript
> > >> > libraries, JavaScript modules, etc.) can be changed freely and the
> > URLs
> > >> > automatically reflect the actual content (that is, include a
> checksum
> > of
> > >> > that content) for ideal client-side caching ... may simply be out of
> > >> reach.
> > >> >
> > >> > Perhaps for modules we should use an alternate approach based on
> > ETags (
> > >> > http://en.wikipedia.org/wiki/HTTP_ETag); in that situation, there
> > would
> > >> > not
> > >> > need to be any version number of checksum in a module URL, but
> clients
> > >> > would request the module content more often (and based on ETag,
> would
> > >> often
> > >> > get a 304 Not Modified).  I would prefer to see a URL that changes
> > when
> > >> the
> > >> > content changes (which prevents the request entirely).
> > >> >
> > >> > --
> > >> > Howard M. Lewis Ship
> > >> >
> > >> > Creator of Apache Tapestry
> > >> >
> > >> > The source for Tapestry training, mentoring and support. Contact me
> to
> > >> > learn how I can get you up and productive in Tapestry fast!
> > >> >
> > >> > (971) 678-5210
> > >> > http://howardlewisship.com
> > >> >
> > >>
> > >>
> > >>
> > >> --
> > >> Dmitry Gusev
> > >>
> > >> AnjLab Team
> > >> http://anjlab.com
> > >>
> > >
> > >
> > >
> > > --
> > > Howard M. Lewis Ship
> > >
> > > Creator of Apache Tapestry
> > >
> > > The source for Tapestry training, mentoring and support. Contact me to
> > > learn how I can get you up and productive in Tapestry fast!
> > >
> > > (971) 678-5210
> > > http://howardlewisship.com
> > >
> >
> >
> >
> > --
> > Howard M. Lewis Ship
> >
> > Creator of Apache Tapestry
> >
> > The source for Tapestry training, mentoring and support. Contact me to
> > learn how I can get you up and productive in Tapestry fast!
> >
> > (971) 678-5210
> > http://howardlewisship.com
> >
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

Reply via email to