Django request.session.modified vs session\u保存每个\u请求

Django request.session.modified vs session\u保存每个\u请求,django,django-sessions,Django,Django Sessions,我理解这些在实践中如何不同地工作。例如,如果我有: request.session.['cart'].remove('item') 如果不显式调用request.session.modified=True 或者在settings.py中使用SESSION\u SAVE\u EVERY\u REQUEST=True 或者,我可以通过以下两种方法之一: cart = request.session['cart'] cart.remove('item') request.session['cart'

我理解这些在实践中如何不同地工作。例如,如果我有:

request.session.['cart'].remove('item')
如果不显式调用
request.session.modified=True

或者在settings.py中使用
SESSION\u SAVE\u EVERY\u REQUEST=True

或者,我可以通过以下两种方法之一:

cart = request.session['cart']
cart.remove('item')
request.session['cart'] = cart
我的问题是,在每个请求中使用SESSION\u SAVE\u是否有任何缺陷,无论是在性能方面还是在意外后果方面。如果修改了会话中的值,我看不出有任何理由不想保存会话

(…)如果使用
SESSION\u SAVE\u EVERY\u REQUEST
有任何缺陷,无论是性能还是意外后果。如果修改了会话中的值,我看不出有任何理由不想保存该会话

当然,
SESSION\u SAVE\u每次请求
都会保存会话。不管你是否进行了绞刑,因为Django无法(完美地)检测到这一点。因此,这意味着在每个请求结束时,会话将被序列化


会话存储在服务器端。它将使用会话密钥在客户端浏览器中设置cookie,但会话本身的数据存储在服务器端。存储会话有几种方法,可以在e(内存)缓存中完成,也可以在文件系统上的文件或数据库中完成。特别是后两种方法将在文件系统I/O或数据库查询方面产生一些开销。虽然这些操作可能不会成为瓶颈,但它是查询或磁盘I/O的额外来源,因此会对性能和承载应用程序的价格产生一些影响。

会话存储在服务器端。这可以在(内存)缓存、文件系统或数据库中完成。特别是对于最后两个例子,每次节省都会导致文件系统/数据库的开销,因为不能保证任何东西都发生了变化。您能想出一种更“pythonic”的方法来完成这个例子吗,比如一行程序?除此之外:request.session['cart']=request.session['cart'].remove('item'))