Did you put that somewhere in the wiki in a plugin development guideline
(or something like that ?)

Arnaud

On Tue, Mar 20, 2012 at 11:59 PM, Kohsuke Kawaguchi <
[email protected]> wrote:

>
> I was looking into the performance of the page rendering for upcoming
> 1.458, and made some improvements to the way plugins access static
> resources. Taking advantages of this requires help from plugin developers,
> so here is a call for action.
>
> In short, you should be using ${resURL} and not ${rootURL} for accessing
> static files in your plugin. Or in code, it'd be
> "Jenkins.getResourcePath()".
>
> [1] and [2] shows the concrete examples of those changes. If respective
> plugin developers can make those changes in their plugins, we'd
> collectively improve the user experience.
>
> This is especially high priority for plugins that provide PageDecorator
> extension points, as they inject some stuff into every single page.
>
>
> For Jenkins 1.458 and later, this change will make those static resources
> served with long Expires header, enabling the browser to cache them (and
> use them without contacting the server again with the "If-Modified-Since"
> header). These URLs will look like "/static/..../plugin/git/abc.**png"
> where "...." portion changes for each server reboot. This ensures that the
> browser never uses a stale file when plugins are updated.
>
> For Jenkins 1.457 and earlier, "/static/.../" will serve the intended
> resource but without any "Expires" header. So it degrades nicely.
>
> The reason this change is important is because it saves browsers from
> making pointless GET requests with an "If-Modified-Since" header, only to
> get "304 Not Modified" response from the server. Each such request/response
> pair costs a packet round trip (which can be easily in the order of 100ms
> if you access ci.jenkins-ci.org from Europe or Asia.) And because most
> browsers do not implement HTTP pipelining or have it disabled by default,
> this latency gets multiplied by the number of such resources.
>
> This issue gets even worse by x3 to x4 for some deployments that utilizes
> HTTP intermediaries that do not support keep alive (including
> http://ci.jenkins-ci.org/ until a few hours ago), resulting in slow down
> that can be measured in the order of second.
>
>
> This is a part of the UI enhancement drive, and performance is a feature.
> Thanks in advance for helping making Jenkins faster, and let me know if
> there's any questions.
>
>
>
> [1] https://github.com/jenkinsci/**translation-plugin/commit/**
> d0731c366a6829d2a120e24642b313**36810e6eb0<https://github.com/jenkinsci/translation-plugin/commit/d0731c366a6829d2a120e24642b31336810e6eb0>
> [2] https://github.com/jenkinsci/**git-plugin/commit/**
> 53ffd3bd4e78269a8c9c9a786ad032**1d7542150d<https://github.com/jenkinsci/git-plugin/commit/53ffd3bd4e78269a8c9c9a786ad0321d7542150d>
> --
> Kohsuke Kawaguchi | CloudBees, Inc. | http://cloudbees.com/
> Try Nectar, our professional version of Jenkins
>



-- 
-----
Arnaud Héritier
06-89-76-64-24
http://aheritier.net
Mail/GTalk: [email protected]
Twitter/Skype : aheritier

Reply via email to