Hi,

I've enabled complete page content caching and surprisingly see high
CPU for requests that utilize the memcache with a single call to the
memcache.

As you could see from log & code below there are just single call to
memcache and a call to users.get_current_user()

I have a Django middleware handler as well. But as I understand it
should work on every request and it's fairly simple - doing
configuration basing on request parameters - no DB calls.

Any thouts on reason of such a big difference in numbers?
--
Alex
http://sharp-developer.net/

Example from log:
===========================================================
   1. 12-06 09:11AM 17.294 / 200 1097ms 3725mcycles 27kb
      86.41.125.175 - - [06/12/2008:09:11:18 -0800] "GET / HTTP/1.1"
200 27103 - -

   2. D 12-06 09:11AM 18.388
      Page taken from MEMCACHE by key: page5/
--------------------------------------------------------------------------------------------------------------------
what strange is that sometimes I get very good results for the same
request:
--------------------------------------------------------------------------------------------------------------------
   1. 12-06 09:22AM 40.639 / 200 15ms 14mcycles 27kb
      86.41.125.175 - - [06/12/2008:09:22:40 -0800] "GET / HTTP/1.1"
200 27103 - -

   2. D 12-06 09:22AM 40.650
      Page taken from MEMCACHE by key: page5/
===========================================================


where code for caching is:

====================
@cache.memorize_page()
def index(request):
    # some code here
    return render_to_response('root_index.html',
                                  payload,
                                  context_instance=RequestContext
(request))
def memorize_page(name=None, time=60*60*12):
    def memorize_fn(fn):
        def new_fn(*a, **kw):
            request = a[0]
            # We are caching whole page just for GET requests
            if request.method != "GET":
                return fn(*a, **kw)
            prefix = "page5"
            key = "%s%s" % (prefix, request.path)
            user = get_current_user()
            if user:
                key = "u=%s/%s" % (user.key(), key)
            if request.GET.has_key("cache") and request.GET["cache"]
== "reset":
                memcache.delete(key)
                LOG.debug("Page delete from MEMCACHE by key: %s", key)
            else:
                response_content = memcache.get(key)
                if response_content is not None:
                    LOG.debug("Page taken from MEMCACHE by key: %s",
key)
                    return HttpResponse(content=response_content)
                    #return res

            res = fn(*a, **kw)
            memcache.set(key, res.content, time=time)
            LOG.debug("Page stored to MEMCACHE with key: %s" % key)
            return res
        return new_fn
    return memorize_fn
----------------------------------------
def get_current_user():
    guser = users.get_current_user()
    if not guser:
        return None
    #my code here for authorized users
    # in cache use case we work with unauthorized request
====================
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to