Agree with Bob as far as chat applications are concerned.

I recently worked on a cometd-tapestry chat application and I was doing a lot 
more in javascript than in tapestry although I did integrate tapestry-security 
and tapestry-ioc which made the job a lot easier.

BTW, there is already a tapestry-cometd module by Lance.

regards
Taha

On 09-Apr-2013, at 7:13 AM, 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
>> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
For additional commands, e-mail: dev-h...@tapestry.apache.org

Reply via email to