Jeff Garzik wrote:Sending Last-Modified: should be easy; sending ETag needs some consensus on the contents: mainly about validation. Responding to If-Modified-Since: and If-None-Match: should cut at least _some_ of the page generating time. If ETag can be calculated on URL alone, then we can cut If-None-Match: just at beginning of script. Well, yes, ETag is HTTP/1.1 header. As I said, I'm not talking (at least now) about saving generated HTML output. This I think is better solved in caching engine like Squid can be. Although even here some git specific can be of help: we can invalidate cache on push, and we know that some results doesn't ever change (well, with exception of changing output of gitweb). I'm not sure if it is worth implementing in gitweb, or is it better left to caching engine. With the projects list page and summary page there is additional problem with relative dates, although this can be solved using Jonas Fonseca idea of using absolute dates in the page and using ECMAScript (JavaScript) to convert them to relative: on load, and perhaps on timer ;-) What can be _easily_ done: * Use post 1.4.4 gitweb, which uses git-for-each-ref to generate summary page; this leads to around 3 times faster summary page. * Perhaps using projects list file (which can be now generated by gitweb) instead of scanning directories and stat()-ing for owner would help with time to generate projects lis page What can be quite easy incorporated into gitweb: * For immutable pages set Expires: or Cache-Control: max-age (or both) to infinity * Calculate hash+action based ETag at least for those actions where it is easy, and respond with 304 Not Modified as soon as it can. This might require some code reorganization to not begin writing output before calculating ETag and ETag comparison (If-Match, If-None-Match). * Generate Last-Modified: for those views where it can be calculated, and respond with 304 Not Modified as soon as it can. What can be easily done using caching engine: * Select top 10 of common queries, and cache them, invalidating cache on push (depending on query: for example invalidate project list on push to any project, invalidate RSS/Atom feed and summary pages only on push to specific project) - can be done with git hooks. -- Jakub Narebski Poland - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
| Ingo Molnar | [announce] "kill the Big Kernel Lock (BKL)" tree |
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| Emmanuel Florac | RAID-1 performance under 2.4 and 2.6 |
| Con Kolivas | Re: -mm merge plans for 2.6.23 |
git: | |
| Gerrit Renker | [PATCH 0/37] dccp: Feature negotiation - last call for comments |
| David Miller | [GIT]: Networking |
| Eric W. Biederman | Re: 2.6.24-rc3: find complains about /proc/net |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
