Thank you for the quick response! I was considering such an approach,
implementing a separate dispatcher at first but figured it would just be
too much work and tapestry already provides the features and infrastructure
i need for delivering assets. I seems that i wasn't looking at the problem
i need to solve good enough.

But still, if it would be possible to somehow override the
SRSCachingInterceptor's implementation of isCachable i think i would
actually have a valid solution.
I could have a special handling for the resources with the custom extension
and just not cache them.

Is it possible to do this? Am i missing something in thinking this?

Thanks again.



On Wed, Apr 17, 2013 at 7:05 PM, Howard Lewis Ship <hls...@gmail.com> wrote:

> Generally speaking, assets are expected to be static (that is, unchanging)
> and global, which is why there's so much caching going on.
>
> I would say that you should implement your own Dispatcher (contributed to
> the MasterDispatcher) service and just take control of this, using the same
> techniques you might use to server content out of a database. It ends up
> being more like a servlet at that point (Dispatcher is very similar to
> HttpServlet) and you have control over everything that happens: you control
> the cache, the URL format, the works.  With a little bit of effort, you can
> probably leverage some of the features of Tapestry's asset pipeline
> (minimization, CSS rewriting in 5.4, etc.), by making your data implement
> StreamableResource.
>
>
> On Wed, Apr 17, 2013 at 5:33 PM, Nenad Nikolic <iznenad.niko...@gmail.com
> >wrote:
>
> > Hello, i'm struggling with delivering a transformed resource for each
> > request.
> >
> > Here is exactly what i mean:
> >
> > There are two requests expected to hit the app.
> > 1) a request containing a unique identifier and some other values as
> > request parameters.
> > This request will hit a dispatcher which will store the data into
> > hazelcast, and render a response which will contain urls to two assets
> (one
> > js one css) with a request parameter (the unique identifier).
> > Here is how an example response looks like:
> >
> > <modifier>
> > <javascript>
> > <filepath>
> >
> >
> http://localhost:8080/app/assets/1.0.0-SNAPSHOT/ccdd/template.nmjs?trid=unique_identifier
> > </filepath>
> > </javascript>
> > <css>
> > <filepath>
> >
> >
> http://localhost:8080/app/assets/1.0.0-SNAPSHOT/ccdd/template.nmcss?trid=unique_identifier
> > </filepath>
> > </css>
> > </modifier>
> >
> > This is a machine-to-machine request. The system that made the request
> will
> > give the asset urls to the client when rendering a webpage.
> >
> > 2) the second request is the one coming from the client. It is a request
> > for the actuall assets. It should return the asset but replace the
> > placeholders within the asset with values from hazelcast.
> > I currently have an AssetHandler mapped to the "ccdd" path.
> > In the AssetHandler i get the request parameter and get the values from
> the
> > hazelcast map. Then the values are stored on the environment stack for my
> > ResourceTransformer to access. This whole thing is working and i get a
> > properly transformed asset for the first request.
> >
> > My problem is that when the unique identifier changes the resource is not
> > transformed again.
> >
> > So my questions are:
> >
> > Is it possible to cache resources selectively?
> > Am i doing this in a completely shitty way?
> >
> > I hope that my explanation is understandable. Thx in advance for any
> > responses!
> >
>
>
>
> --
> 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