_______________________________________________
python-chinese
Post: send python-...@lists.python.cn
Subscribe: send subscribe to python-chin...@lists.python.cn
Unsubscribe: send unsubscribe to python-chin...@lists.python.cn
Detail Info: http://python.cn/mailman/listinfo/python-chinese
_______________________________________________
python-chinese
Post: send python-...@lists.python.cn
Subscribe: send subscribe to python-chin...@lists.python.cn
Unsubscribe: send unsubscribe to python-chin...@lists.python.cn
Detail Info: http://python.cn/mailman/listinfo/python-chinese
On Mar 29, 10:03 am, "老生" <liangzhengzh...@gmail.com> wrote:
> 谢谢*yi huang* ,在官方的文档上就这么写的python2.4或者以上的版本可以使用 @cache_page,真汗呀。。。
>
> 昨天晚上回家也想了很久,打算今天从头进行开始调试,看了你的分析,着实学习到不少。。
>
> 先谢了,有问题再向大家讨教。。。
>
> 在07-3-28,yi huang <yi.codepla...@gmail.com> 写道:
>
>
>
>
>
> > 我看了下代码,cache_page 不是标准的 decorator ,不能 @cache_page 这么用。
> > 另外,python 代码很好看啊,怎么会难看懂呢。大部分代码都是平坦的一层,极少看到深层的抽象。
>
> > cache_page 在 views/decorators.py line 18 定义。
> > decorator_from_middleware 函数在 utils/decorators.py ,它返回一个 decorator ,作用是在调用
> > views 的前后调用相应的 middleware 代码(process_request, process_view,
> > process_response)。middleware 放在 settings 里面是对整个站点起作用,而这个函数实际是让 middleware
> > 只对单个views 起作用。
> > 这里 middleware 就是 middleware/cache.py 的 CacheMiddleware 了,他去使用
> > django.core.cache 包,这里是真正实现 cache 的地方。
> > core/cache/__init__.py 根据配置创建 cache 对象。cache 对象的实现就在 backends
> > 包中不同的后端中,这些后端中的 CacheClass 类都实现了同一个协议 (get, set ,delete, get_many, has_key)。
> > memcached.py 的代码也很少,就是调用 memcache 模块的 api 而已。
>
> > On 3/28/07, 老生 <liangzhengzh...@gmail.com> wrote:
>
> > > 这两天研究django缓存,实在恼火,
>
> > > 数据的缓存是没什么问题,即:设置 cache.set("test",data, 60*60*24),读取 cache.get("test"),
>
> > > 在views.py的方法前设置缓存如: @cache_page(10*60),执行提示 'function' object has no
> > > attribute 'method',
>
> > > 以上是在WIN上进行测试的,原本以为是setting.py文件中设置的缓存类型不支持,如:CACHE_BACKEND =
> > > 'locmem:///c:/tem/,而公司服务器上使用的linux系统,所以今天一整天就在linux环境来进行调试。。。。
>
> > > 安装memcached,启动,再进行测试,按照在win上设置@cache_page(10*60)依然出现同样错误提示,如:'function'
> > > object has no attribute 'method'
>
> > > 换种方式,在urls.py中设置,
> > > 如(r'^c(?P<cateid>\w+)-b1/$',cache_page(VerifyPostList,10*60)),不会出任何错误提示,这里不-知道怎么来测试是否是在取缓存里的东西,所以用种很老土的方式测试,,
>
> > > 1、关闭memcached,重启机器,在urls.py中不设置缓存,打印程序执行时间,
>
> > > 2、开启memcached,重启机器,在urls.py中设置缓存,打印程序执行时间,
>
> > > 如此重复以上几个布置,NND,发现两种布置程序执行的时间都差不多,,,
>
> > > 网上查找了好多资料,包括英文 都没发现有django中cache实现原理的资料,看源码的话,想必大家都知道python中的源码实在是难看懂。。。
>
> > > 说了这么多,还是总结以下我的问题及想要了解的东西吧,
>
> > > 问题一:有兄弟用过@cache_page并成功过的吗?
>
> > > 问题二:在views.py中定义的@cache_page与在urls.py中定义的cache_page
> > > 有什么不同?为何我以上调试测试程序的执行时间都一样?
>
> > > 问题三:想实现能找到cache_page中缓存页面的机制,即想在cache中找到缓存页面的key,这样或许有可能我们在后台程序里可以直接获得与修改这个-key中的值。。
>
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chin...@lists.python.cn
> > > Subscribe: send subscribe to python-chinese-requ...@lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > > python-chinese-requ...@lists.python.cn
> > > Detail Info:http://python.cn/mailman/listinfo/python-chinese
>
> > --
> >http://codeplayer.blogspot.com/
> > _______________________________________________
> > python-chinese
> > Post: send python-chin...@lists.python.cn
> > Subscribe: send subscribe to python-chinese-requ...@lists.python.cn
> > Unsubscribe: send unsubscribe to python-chinese-requ...@lists.python.cn
> > Detail Info:http://python.cn/mailman/listinfo/python-chinese
>
>
>
> _______________________________________________
> python-chinese
> Post: send python-chin...@lists.python.cn
> Subscribe: send subscribe to python-chinese-requ...@lists.python.cn
> Unsubscribe: send unsubscribe to python-chinese-requ...@lists.python.cn
> Detail Info:http://python.cn/mailman/listinfo/python-chinese- Hide quoted text -
>
> - Show quoted text -