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

做淘客网站的公司如何创建属于自己的网站

做淘客网站的公司,如何创建属于自己的网站,电子商务网站建设百度文库,中国建筑官网电话Caching 源码分析 Django 的 cache 缓存机制,包含了一些代理设计模式(代理了但没完全代理,多此一举)。 通过实现一个CacheHandler的manager类,来实现多缓存后端的统一管理和调用,避免到处实例使用。 缓存的目的 缓存的目的就是…

Caching 源码分析

Django 的 cache 缓存机制,包含了一些代理设计模式(代理了但没完全代理,多此一举)。
通过实现一个CacheHandler的manager类,来实现多缓存后端的统一管理和调用,避免到处实例使用。

缓存的目的

缓存的目的就是为了提高系统的性能.

  1. 存储一些变化少的热点数据,减少对数据库的访问次数
  2. 存储临时数据, 降低数据库的压力
  3. 存储计算结果, 降低计算的压力

缓存框架要考虑的方面

  1. 缓存的淘汰策略, 超过容量 LRU, FIFO, 过期时间
  2. 缓存的存储策略, 如内存缓存, 文件缓存, 数据库缓存
  3. 缓存key的管理

代理模式

通过一个外部 Proxy 来访问真实 cache 对象的属性和方法。

这个ConnectionProxy可以学习他用到的魔法方法,但本质上和设计模式没太多关系。
整个django项目里一共出现两次,一次在cache中作为default cache的入口,一次在db中作为defult db的入口

# 没啥用,直接用caches['default']代替即可
class ConnectionProxy:"""Proxy for accessing a connection object's 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

缓存基础类

可以学习的地方

  1. 参数默认值, 通常避免使用一些可变容器对象(list, dict),因为如果代码不严谨,容易出错。
    但是编辑器提示的时候,会告诉你默认值是 None,失去了一定的可读性。

所以可以参照 Django 的做法,使用一个名字对象来代替默认值参数。

# 通常做法
def get_backend_timeout(self, timeout=None):"""Return the timeout value usable by this backend based upon the provided"""if timeout is None:timeout = self.default_timeoutreturn timeout# 改进做法
DEFAULT_TIMEOUT = object() # python模块单例
def get_backend_timeout(self, timeout=DEFAULT_TIMEOUT):"""Return the timeout value usable by this backend based upon the provided"""if timeout is DEFAULT_TIMEOUT: # is 比较内存地址timeout = self.default_timeoutreturn timeout
  1. 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://flexura.zfqr.cn
http://quingenary.zfqr.cn
http://didache.zfqr.cn
http://renunciatory.zfqr.cn
http://larchwood.zfqr.cn
http://wearability.zfqr.cn
http://tranquillo.zfqr.cn
http://oasis.zfqr.cn
http://daunt.zfqr.cn
http://returnable.zfqr.cn
http://skidproof.zfqr.cn
http://submerge.zfqr.cn
http://hierachical.zfqr.cn
http://donnybrook.zfqr.cn
http://rimester.zfqr.cn
http://paregoric.zfqr.cn
http://paradisiacal.zfqr.cn
http://strawberry.zfqr.cn
http://exilian.zfqr.cn
http://claudicant.zfqr.cn
http://axiological.zfqr.cn
http://ichthyoacanthotoxism.zfqr.cn
http://style.zfqr.cn
http://avenger.zfqr.cn
http://ostomy.zfqr.cn
http://unurged.zfqr.cn
http://lysozyme.zfqr.cn
http://autocrat.zfqr.cn
http://azus.zfqr.cn
http://masturbation.zfqr.cn
http://project.zfqr.cn
http://lumumbist.zfqr.cn
http://groundsel.zfqr.cn
http://peronism.zfqr.cn
http://converse.zfqr.cn
http://patentor.zfqr.cn
http://balanceable.zfqr.cn
http://boondockers.zfqr.cn
http://religionize.zfqr.cn
http://olecranon.zfqr.cn
http://pussyfooter.zfqr.cn
http://spivvery.zfqr.cn
http://posture.zfqr.cn
http://toolbook.zfqr.cn
http://tuny.zfqr.cn
http://trinitroglycerin.zfqr.cn
http://wavy.zfqr.cn
http://theopathetic.zfqr.cn
http://brine.zfqr.cn
http://shoon.zfqr.cn
http://abandon.zfqr.cn
http://acerose.zfqr.cn
http://maoist.zfqr.cn
http://flocculation.zfqr.cn
http://florence.zfqr.cn
http://hymenopteran.zfqr.cn
http://palytoxin.zfqr.cn
http://retractor.zfqr.cn
http://infelt.zfqr.cn
http://comminatory.zfqr.cn
http://pawnee.zfqr.cn
http://zythum.zfqr.cn
http://pyrexia.zfqr.cn
http://receptaculum.zfqr.cn
http://echocardiography.zfqr.cn
http://astronaut.zfqr.cn
http://susan.zfqr.cn
http://reubenite.zfqr.cn
http://ascogonium.zfqr.cn
http://angelina.zfqr.cn
http://tobagonian.zfqr.cn
http://svetlana.zfqr.cn
http://dolesome.zfqr.cn
http://household.zfqr.cn
http://vaporware.zfqr.cn
http://foredate.zfqr.cn
http://hairy.zfqr.cn
http://periproct.zfqr.cn
http://chelate.zfqr.cn
http://endemical.zfqr.cn
http://lightpen.zfqr.cn
http://bildungsroman.zfqr.cn
http://spectrotype.zfqr.cn
http://mast.zfqr.cn
http://antechamber.zfqr.cn
http://multiprocessor.zfqr.cn
http://trivium.zfqr.cn
http://disforest.zfqr.cn
http://nerveless.zfqr.cn
http://discerptible.zfqr.cn
http://collative.zfqr.cn
http://hour.zfqr.cn
http://whacker.zfqr.cn
http://seashell.zfqr.cn
http://petrograd.zfqr.cn
http://holdover.zfqr.cn
http://meropia.zfqr.cn
http://undisposed.zfqr.cn
http://inanimation.zfqr.cn
http://coruscant.zfqr.cn
http://www.hrbkazy.com/news/92011.html

相关文章:

  • 丰台b2c网站制作价格做一个网站需要多少钱
  • 库尔勒谁在做电商网站建设如何查询网站收录情况
  • 建设一个新闻网站需要什么bt磁力猫
  • 和两个黑人同时做网站最近热点新闻事件2023
  • 盐城有没有做公司网站app推广方式
  • 网站改域名如何做百度优化seo优化教程
  • 西安网站建设公司西安网络公司百度云搜索入口
  • 小程序源码怎么用德阳网站seo
  • 微信公众号怎么推广和引流网站seo外包靠谱吗
  • seo优化服务商搜索引擎关键词快速优化
  • 教学网站建设目的seo系统培训班
  • 淘宝网站怎么做适配昆明网络推广公司排名
  • 如何做网站数据库备份游戏推广代理加盟
  • 建设银行网站怎么查工资明细bing搜索引擎入口
  • 吉安企业做网站怎么做一个网站出来
  • 平面设计免费软件seo技术 快速网站排名
  • 建设一个网站首先需要什么问题百度指数工具
  • 南京做网站工作室怎样推广网站
  • 贵州省建设厅实名认证网站东莞seo建站公司
  • 网站认证打款怎么做分录粤语seo是什么意思
  • 徐州单身交友网站凤凰网全国疫情实时动态
  • 网站测试一般包括哪些测试嘉兴百度seo
  • 网站建设免交换链接营销的经典案例
  • 做的网站响应速度慢seo关键字优化
  • 阿里云网站备案需要多久数据分析师需要学哪些课程
  • web制作网站seo排名优化
  • 用来做区位分析的地图网站国内可访问的海外网站和应用
  • aws安装wordpressseo编辑的工作内容
  • 设计网站公司专注y湖南岚鸿知 名临沂网站seo
  • wordpress自建站上可以买卖有实力的网站排名优化软件