#!/usr/bin/env python
# -*- coding:utf-8 -*-
#
# Author : cold
# E-mail : wh_linux@126.com
# Date : 13/01/14 09:57:31
# Desc :
#
import config
import pylibmc
from tornado.web import RequestHandler
#### 省略Cache类定义 #####
class Memcached(object):
_mc = pylibmc.client.Client(config.CACHE_HOST, binary = True)
def __enter__(self):
if config.CACHED:
return Memcached
else:
return Cache()
def __exit__(self, exc_type, exc_val, exc_tb):
pass
@classmethod
def get_cache(cls):
return cls._mc
@classmethod
def get(cls, key, default = None):
r = cls._mc.get(key)
if not r:
r = default
return r
@classmethod
def set(cls, key, value, timeout = 0):
timeout = timeout if timeout else config.CACHE_TIMEOUT
return cls._mc.set(key, value, timeout)
@classmethod
def delete(cls, key):
return cls._mc.delete(key)
@classmethod
def flush(cls):
return cls._mc.flush_all()
def __getattr__(self, key):
return Memcached.get(key)
def __setattr__(self, key, value):
return Memcached.set(key, value)
class BaseHandler(RequestHandler):
""" 继承tornado请求基类,重写 prepare和on_finish方法 """
cache = Memcached
def render(self, template_path, *args, **kwargs):
""" 渲染模板 """
# 省略渲染模板代码
content = '' # 渲染模板后的内容
if self.request.method == "GET" and CACHED and \
not self.request.path.startswith("/admin"):
self.cache.set(self.request.uri, content) # 将渲染后的内容缓存起来
self.write(content)
def prepare(self):
super(BaseHandler, self).prepare()
# 如果请求是GET方法,而且不是请求后台
if self.request.method == "GET" and CACHED and \
not self.request.path.startswith("/admin"):
# 尝试获取当前页面的缓存
cache = self.cache.get(self.request.uri)
# 获取缓存则输出页面,结束请求
if cache:
return self.finish(cache)
def on_finish(self):
""" 重写结束请求前的方法函数 """
if self.request.method == "POST":
# 如果遇到POST提交则清空缓存
self.cache.flush()
$ webbench -c 500 -t 30 http://www.linuxzen.com/ Webbench - Simple Web Benchmark 1.5 Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software. Benchmarking: GET http://www.linuxzen.com/ 500 clients, running 30 sec. Speed=54 pages/min, 38160 bytes/sec. Requests: 27 susceed, 0 failed.
$ webbench -c 500 -t 30 http://www.linuxzen.com/ Webbench - Simple Web Benchmark 1.5 Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software. Benchmarking: GET http://www.linuxzen.com/ 500 clients, running 30 sec. Speed=256 pages/min, 238544 bytes/sec. Requests: 128 susceed, 0 failed.
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有