forked from Suor/django-cacheops
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGELOG
154 lines (130 loc) · 4.84 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
2.3.1
- updated support for Django 1.8 (Andriy Sokolovskiy)
- fixed bulk_create() to return objects instead of None (Ilya Baryshev)
2.3
- Django 1.8 support and preliminary Django 1.9 support
- made 'ops' config option to accept single string
- added invalidate_fragment()
- added a way to get/set/delete function cache easily
- added redis.TimeoutError to degradation handling (George Kappel)
- fixed invalidation on QuerySet.bulk_create(),
worked only from Manager previously
- fixed .bulk_create() API to comply with Django
- minor optimizations
2.2.1
- fixed thread local error
- fixed ops = 'all' both in config and .cache()
2.2
- switched to new CACHEOPS setting style
- added CACHEOPS_DEFAULTS setting
- work as LRU cache
- cache .exists() calls in Django 1.6+
- invalidate on .bulk_create()
- added no_invalidation context manager/decorator
- documented local_get and cache_on_save
- fixed saving objects with F-expression fields (Fedor Nasyrov)
- fixed queries with Django 1.7 transforms
- fixed binary fields in python 3
- stopped using simplejson
- simpler queryset key calculation,
third party fields should be more compatible now
- removed bogus clone param from .nocache() call
2.1.1
- fixed bug in m2m invalidation
- fixed bug with null geometry fields
- fixed unpickling objects with BinaryFields
2.1
- support Django 1.7
- do not fetch from cache when doing .select_for_update() and similar,
but do write to cache if it's enabled
- fixed inherited models exception in admin,
multi-table models are still not really supported!
- fixed fake cacheops
- fixed deprecation warning in Django 1.6 admin
2.0
- conditions on related models will now invalidate queryset
- m2m invalidation is much more granular
- removed requirement that timeout should not be greater than default
- lua scripting is used to save and invalidate cache, making things faster
- better invalidation for complex and custom fields
- silent stringify of unknown objects by default
- support caching django.contrib.gis queries (koodjo)
- cacheops is now thread-safe
- added a way to no-op cacheops
- added @cached_view() and @cached_view_as()
- pass several samples for @cached_as() and @cached_view_as()
- fixed working with querysets created by non-patched constructor (#3 and dups)
- fixed invalidate_model() for proxy models
- fixed deepcopy(queryset) bug
- fixed possible collisions when cached functions passed complex structured arguments
- fixed StringifyError on timedelta (mpyatishev)
Backwards incompatible changes:
- filters on TextFields no longer affect invalidation
- @cached_as() cache key will now depend on function arguments
- @cached_as() and @cached() will now depend on function line in a code,
permitting usage of lambdas and same named methods without passing extra
- @cached_as() and @cached() will now take timeout as first argument and extra as second.
Anyway using them as keyword arguments is recommended
- Django 1.2 no longer supported
- Redis 2.6+ is required
1.3.1
- fixed bug with negating "some"-conditions
- fixed bug with schemes unsync when invalidating model
Backwards incompatible changes:
- reverted .cache(write_only=...) behaviour to enable caching for all ops
- .cache(timeout=...) call will enable caching for all ops
1.3.0
- support generic relations (erthalion)
- support filtering by time equality
- optimizations for python 3
Backwards incompatible changes:
- .cache(write_only=...) doesn't enable caching for all ops anymore (not really intended)
1.2.1
- set six minimum version right (crazyzubr)
1.2
- Python 3 support
1.1.1
- fixed Django 1.5- compatibility (aykutozat)
1.1
- Django 1.6+ support
- added Django template tags
- fixed caching querysets combined with | and & operators
1.0.3
- added db_agnostic option to cache profile
- partial support for Django 1.6+
1.0.2
- fixed cached_on_save
- fixed .inplace() altering cache key
1.0.1
- .delete() method for simple cache
- .invalidate() method for @cached() and file_cache.cached() functions
1.0.0
- defend against model changes corrupting cache (ttyS15)
- support F-expressions (Yuego)
- fixed local_get with unhashable arg TypeError
- fixed caching of raw queries (Yuego)
0.9.9
- fixed file cache md5 reference
0.9.8
- support isnull lookup for better invalidation
- fixed 'Query' has no len()
- dumped django.utils.hashcompat in favor of hashlib
0.9.7
- support for flex models
- support @cached_as(SomeModel)
- file cache default dir changed to /tmp/cacheops_file_cache
- better support for tuples in extra param in @cached and jinja2 tags
0.9.6
- support gracefull degradation on redis fail (Beres Botond)
0.9.5
- support for proxy models
0.9.4
- fixed occasional redis 100% cpu use (tumb1er)
0.9.3
- invalidate and cleanfilecache commands added to dist
- django 1.5 compatability (jhpinson)
0.9.2
- compatability with latest redis-py
- many other bug fixes
- minor optimizations
- better docs, including PERFORMANCE section