On Sun, 2011-11-13 at 22:27 -0500, Plamen Ivanov wrote:

> On 11/13/2011 01:39 PM, Ashley Sheridan wrote: 
> 
> > On Sun, 2011-11-13 at 18:39 +0100, rene7705 wrote:
> > 
> >   
> > 
> > > Hi.
> > > 
> > > I'm developing a CMS, with lots of javascript code.
> > > I haven't been satisfied with my page initialization speeds, so I've
> > > started on a caching system.
> > > 
> > > First, i used to call up javascript as needed, and just-in-time. But that,
> > > on a localhost setup, results in a second and a half delay.
> > > So now I include all javascript for the entire CMS as inline js in the
> > > <head> of index.php. Index.php gets gzipped of course.
> > > The difference is really noticeable, without looking at any counters even.
> > > 
> > > So far so good.
> > > 
> > > Now I'd like to implement a caching system for ajax requests.
> > > I was thinking to take URL, GET, and POST send parameters, and compare 
> > > such
> > > a set to items in a local js cache.
> > > 
> > > If the local cache is not available, the ajax request is sent as normal,
> > > and the result is put in the cache.
> > > Javascript implementation could be as easy as changing
> > > jQuery.ajax(ajaxCommand) to cacheManager.ajax(ajaxCommand)
> > > 
> > > If the local cache is available, the onSuccess handler of the ajax request
> > > is called with the cached data.
> > > 
> > > On the server end, the cached items are put in a global JSON "FAT" file,
> > > again with URL, GET and POST as keys to a flat plaintext filename.
> > > 
> > > On the server, any "normal" ajaxable URL will call php code to update the
> > > server end cache.
> > > 
> > > Index.php would query the cache for a "subscription", a list of cache
> > > URL+GET+POST keys, and include these cached items as
> > > <div id="cache_idx" style="display:none"><!-- {"keys" :
> > > {URL+GET+POST+LAST_MODIFIED}, "data" : "cached-data"} --></div>
> > > From where the javascript cache manager would be able to find the data.
> > > 
> > > The javascript cache manager would include some kind of polling system, to
> > > get near realtime updates for it's cached data.
> > > 
> > > I'm convinced caching of ajax results would further increase my page
> > > initialization speeds.
> > > 
> > > I'm interested to learn about potential pitfalls, any opensource libraries
> > > that already do this, or any other tips you can think of.
> > > 
> > > Thanks for your time.
> > >     
> > 
> > 
> > You shouldn't really cache POST requests. GET data is only ever meant to
> > fetch data from a server, which works well with caching, but POST is
> > meant to change the state of something on the server, so it may never
> > make sense to cache that, and could cause problems later on with things
> > being cached even if they appear as if they shouldn't.
> > 
> > If there are certain chunks of the content that will never change then
> > you could cache those I guess, although not sure how you would be able
> > to do that at the server level.
> > 
> > Another way to add some speed is to minify your Javascript, be it inline
> > or in a different file, which results in less bandwidth being used to
> > send the data, and less time to send it as it's smaller. Images can be
> > combined into a sprite map which can reduce the requests in the same way
> > you reduced them by making your Javascript inline.
> > 
> > If you use libraries like JQuery, use a public one such as that found on
> > Google Code. Many sites use it, so it is more likely a user has it
> > cached on their machine already from visiting another site that uses it.
> > 
> > These are all pretty basic techniques, and although they don't answer
> > your question exactly, they may be useful for you to achieve the same
> > goal.
> > 
> >   
> 
> What exactly do you mean by "i used to call up javascript as needed,
> and just-in-time."? If you have a lot of dependencies having lag makes
> sense because of the cascade of calls. Bundle up all your static
> scripts in one JS file and compress. It should get cached most modern
> browsers. Anyhoo, I don't really know how caching works, but this
> might help: HTTP ETag. 
> 
> As a side note: don't do inline -
> http://robertnyman.com/2008/11/20/why-inline-css-and-javascript-code-is-such-a-bad-thing/
> 
> 


Please try to remember to keep the list copied into the replies so that
everyone can benefit.

-- 
Thanks,
Ash
http://www.ashleysheridan.co.uk


Reply via email to