我想知道你们是否可以给我一些关于使我的代码性能更好的建议.
我有一组for循环,它们查看一个键是否在一个字典中,其值是一个列表,如果该键存在,它会附加到列表中,如果它没有,它会为该键添加一个新列表
dict={}
for value in value_list:
if value.key in dict.keys():
temp_list = dict[value.key]
temp_list.append(value.val)
dict[value.key] = temp_list
else:
dict[value.key] = [value.val]
Run Code Online (Sandbox Code Playgroud)
现在这段代码工作正常,但是随着字典开始填充行值,dict.keys()中的key变得越来越麻烦.
有没有更好的方法呢?
谢谢,
麦克风
我在一个Django应用程序下有许多站点,我想实现站点范围的缓存.然而事实证明这是一个真正的麻烦.
发生的事情是settings.CACHE_MIDDLEWARE_KEY_PREFIX在启动时设置一次,我无法继续并根据当前站点的内容进行更改.因此,如果http://website1.com/abc/缓存了一个url页面,则http://website2.com/abc/呈现缓存版本http://website1.com/abc/.这两个网站都在同一个Django实例上运行,因为Django Sites似乎允许我们这样做.
这是一种不正确的方法吗?因为我无法CACHE_MIDDLEWARE_KEY_PREFIX在运行时动态设置,所以无法使用Django的站点范围缓存来缓存多个站点.我也无法为模板和视图缓存执行此操作.
我得到的印象是,真正需要设置的方式是每个站点都需要自己的Django实例,除了设置文件之外几乎完全相同,在我的情况下,设置文件只有不同的值CACHE_MIDDLEWARE_KEY_PREFIX.这些Django实例都读写同一个数据库.这让我很担心,因为它可能会产生一些新问题.
我是走在正确的轨道上还是我错误地认为多站点架构需要如何工作?我检查了Django文档,并没有真正提到如何处理为多个站点提供服务的Django应用程序的缓存(不是低级缓存).
它并不难以使django中的特定模板缓存无效
def invalidate_cache_key(fragment_name, *variables):
args = md5_constructor(u':'.join([urlquote(var) for var in variables]))
cache_key = 'template.cache.%s.%s' % (fragment_name, args.hexdigest())
cache.delete(cache_key)
Run Code Online (Sandbox Code Playgroud)
但是,我有一种情况需要删除所有已传递给它们的变量的缓存片段.例如,删除所有关于汽车品牌"丰田"的缓存片段.
{% cache 100000 car_content car.brand %}
Run Code Online (Sandbox Code Playgroud)
基本上有一种方法可以根据一组标准获取所有cache_keys吗?我一直在想改变缓存源,但我想知道是否有更好的解决方案可以解决这个问题.