当前位置: 首页 > news >正文

旅游网站开发报告淮安做网站优化

旅游网站开发报告,淮安做网站优化,wordpress类似娱乐网主题,小牛在线运营管理平台Caching 源码分析 Django 的 cache 缓存机制#xff0c;包含了一些代理设计模式(代理了但没完全代理#xff0c;多此一举)。 通过实现一个CacheHandler的manager类#xff0c;来实现多缓存后端的统一管理和调用#xff0c;避免到处实例使用。 缓存的目的 缓存的目的就是…Caching 源码分析 Django 的 cache 缓存机制包含了一些代理设计模式(代理了但没完全代理多此一举)。 通过实现一个CacheHandler的manager类来实现多缓存后端的统一管理和调用避免到处实例使用。 缓存的目的 缓存的目的就是为了提高系统的性能. 存储一些变化少的热点数据,减少对数据库的访问次数存储临时数据, 降低数据库的压力存储计算结果, 降低计算的压力 缓存框架要考虑的方面 缓存的淘汰策略, 超过容量 LRU, FIFO, 过期时间缓存的存储策略, 如内存缓存, 文件缓存, 数据库缓存缓存key的管理 代理模式 通过一个外部 Proxy 来访问真实 cache 对象的属性和方法。 这个ConnectionProxy可以学习他用到的魔法方法但本质上和设计模式没太多关系。 整个django项目里一共出现两次一次在cache中作为default cache的入口一次在db中作为defult db的入口 # 没啥用直接用caches[default]代替即可 class ConnectionProxy:Proxy for accessing a connection objects attributes.def __init__(self, connections, alias):self.__dict__[_connections] connectionsself.__dict__[_alias] alias# 重写__getattr__方法, 使得ConnectionProxy可以像访问真实的connection对象一样访问属性和方法def __getattr__(self, item):return getattr(self._connections[self._alias], item)# 重写__setattr__方法, 使得ConnectionProxy可以像访问真实的connection对象一样设置属性和方法def __setattr__(self, name, value):return setattr(self._connections[self._alias], name, value)# 重写__delattr__方法, 使得ConnectionProxy可以像访问真实的connection对象一样删除属性和方法def __delattr__(self, name):return delattr(self._connections[self._alias], name)# 重写__contains__方法, 使得ConnectionProxy可以使用 key in ConnectionProxy的语法来判断key是否存在于缓存中, 实际实现在BaseCache的各个子类中实现def __contains__(self, key):return key in self._connections[self._alias]# 重写__eq__方法, 使得ConnectionProxy可以使用 ConnectionProxy other的语法来判断两个ConnectionProxy是否指向同一个缓存对象, 实际实现在BaseCache的各个子类中实现# 其实可以用total_ordering装饰器来实现__eq__方法, 但是为了保持一致性, 这里还是自己实现def __eq__(self, other):return self._connections[self._alias] other 缓存基础类 可以学习的地方 参数默认值, 通常避免使用一些可变容器对象(list, dict)因为如果代码不严谨容易出错。 但是编辑器提示的时候会告诉你默认值是 None,失去了一定的可读性。 所以可以参照 Django 的做法使用一个名字对象来代替默认值参数。 # 通常做法 def get_backend_timeout(self, timeoutNone):Return the timeout value usable by this backend based upon the providedif timeout is None:timeout self.default_timeoutreturn timeout# 改进做法 DEFAULT_TIMEOUT object() # python模块单例 def get_backend_timeout(self, timeoutDEFAULT_TIMEOUT):Return the timeout value usable by this backend based upon the providedif timeout is DEFAULT_TIMEOUT: # is 比较内存地址timeout self.default_timeoutreturn timeout contains方法 实现 contains 方法可以改变in操作的结果 def __contains__(self, key):Return True if the key is in the cache and has not expired.# This is a separate method, rather than just a copy of has_key(),# so that it always has the same functionality as has_key(), even# if a subclass overrides it.return self.has_key(key)总结 其他部分就是 BaseCache 的子类了用对应的 client 实现缓存的方法。
http://www.ho-use.cn/article/10816802.html

相关文章:

  • 朝阳市建设厅查询网站企业文化墙设计公司
  • 用php做京东网站页面专业网站建设推广
  • 如何禁止某ip访问网站做网站游戏的网站有哪些
  • 怎么查看网站访问速度石家庄免费自助建站模板
  • 福建住房与城乡建设网站wordpress彩票类模板
  • 淘宝佣金推广网站建设中建八局第一建设有限公司电话
  • 网站策划与设计(百度推广可以自己开户吗
  • 泰安集团网站建设地点优化搜索引擎的方法
  • 电脑网站建设方案网站怎么用栏目做地区词
  • 交易网站备案p2p视频网站开发
  • 微信网站公司买了个网站源码后要怎么用
  • wordpress无法创建页面合肥seo按天扣费
  • 做网站订金为什么需要交那么多做积分商城网站
  • 帝国cms做漫画网站教程唐山路北网站建设
  • 衡水微信网站建设厦门网页设计代做
  • 网站开发需要证书吗优秀网页欣赏
  • 制作网站多少钱一个网页制作步骤流程
  • 如果网站设计时wordpress2018
  • 建立网站 费用wordpress设置的页面跳转失败
  • 怎样建设一个自己的网站首页wordpress 文章列表顺序
  • 网站解析后wordpress注册登陆
  • 网站seo优化价格可以自己做网站卖东西
  • 网站开发前端简历wordpress 后台忘了
  • 网站建设app销售好做吗wordpress怎么置顶
  • 药品网上商城新媒体seo指的是什么
  • 网站地址栏小图标口碑好的网站建设方法有哪些
  • 建设网站需要招聘哪些人网站备案主体
  • 企业网站建站的专业性原则是指可以做公众号封面图的网站
  • 电子商务网站建设工资公司企业信息查询
  • 专业的丹阳网站建设定制网络流量监控软件