I think having a special "matches anything" checksum value (perhaps "-"?) might be a good idea from an integration point of view. Again, for anything that originates inside Tapestry, Tapestry will build the correct URL.
On Tue, Apr 9, 2013 at 9:18 AM, Barry Books <trs...@gmail.com> wrote: > I'm not a big fan of the release in the URL for three reasons > > 1 it causes problems in development because things change but the URL does > not > > 2 it causes all resources to become invalid with a release even if they do > not change. The more often you release the bigger the problem > > 3. It complicates CDN integration because all the assets paths change > every release > > Using a hash as part of the URL > > /assets/myapp/hash/.../name solves these but makes the URL difficult to > predict. Adding > /assets/myapp/nocache/.../name > > Makes it possible to predict the name in style sheets if needed and CSS > rules allow this to be overridden in the layout if you want the performance > increase. The ETag could also be used here so the nocache asset could > return a not modified > > On Apr 9, 2013, at 9:46 AM, Ivan Khalopik <ikhalo...@gmail.com> wrote: > > > In my opinion the best practice is to use ETag in addition to application > > version folder. So the first level of asset caching is by path, e.g. > > /assets/myapp/1.0.0/... When we deploy a new app version, this path is > > changed and browser forces new assets retrieval. If application version > is > > not changed, we have the same path for assets and they are cached by > > browser until expired. But we can also reduce the traffic even if app > > version is changed or browser cache is expired. If we have the second > level > > of cache using ETag. If asset checksum is changed we will return the > whole > > asset content, or just 304 otherwise. > > > > So, application version folder reduces request count to those that are > not > > cached for current app version, ETag reduces the rest of traffic if asset > > checksum is not changed. > > > > > > > > > > On Tue, Apr 9, 2013 at 4:39 PM, Dmitry Gusev <dmitry.gu...@gmail.com> > wrote: > > > >> Barry, > >> > >> no need to pass current date as application version, because if you > don't > >> supply any defaults then > >> tapestry will generate random version for you. > >> > >> But this may have some limitations if you're running in a clustered > >> environment. > >> > >> Also your clients will get new assets every time you restart your > server. > >> > >> See this: > >> > >> > http://mail-archives.apache.org/mod_mbox/tapestry-users/201005.mbox/%3caanlktinz4ukjng-zom8t86ry-mrw7st7e9eufhkvv...@mail.gmail.com%3e > >> > >> > >> On Tue, Apr 9, 2013 at 5:26 PM, Barry Books <trs...@gmail.com> wrote: > >> > >>> After being bitten by APPLICATION_VERSION I switched to this > >>> > >>> configuration.override(SymbolConstants.APPLICATION_VERSION, > >>> *new*Date().getTime()); > >>> > >>> > >>> This way on my development machine I get a new version every restart > and > >> on > >>> my production machine on every deploy. > >>> > >>> > >>> That said I think the hash of the object in the URL and a never expires > >>> header is the way to handle this. The only problem I can think of is > >> assets > >>> in style sheets. I would say the solution to that problem lookup the > >> asset > >>> with the hashed url and return the object with a never expires header. > If > >>> there is no hash just return the object without the header. This makes > it > >>> easy to use assets in stylesheets. If you want to solve the caching > >> problem > >>> just override (or declare) the style in the Layout component and use > the > >>> asset like this: > >>> > >>> > >>> <style> > >>> > >>> .navbar-fixed-top { > >>> > >>> xheight: 64px; > >>> > >>> background-position: 0px 40px; > >>> > >>> xbackground-image: url('${context:/images/top-background.jpg}'); > >>> > >>> xbackground-repeat: repeat-x; > >>> > >>> } > >>> > >>> </style> > >> > >> > >> > >> -- > >> Dmitry Gusev > >> > >> AnjLab Team > >> http://anjlab.com > > > > > > > > -- > > BR > > Ivan > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org > For additional commands, e-mail: dev-h...@tapestry.apache.org > > -- 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