我们使用Rails与设计和cancancan宝石。我们的用户会话使用ActiveRecord SessionStore存储。
在我们的前端(JavaScript)代码中,我们最近开始使用Web worker对我们的后端执行Ajax请求。这意味着这些请求不再与来自' main'的请求属于同一会话。线程。
反过来,这意味着我们的会话数据库表会随着“临时”而快速增长。来自Web工作者的会话请求不需要保留。这些临时记录的增长率远远高于我们之前的增长率,因此我们希望摆脱这些不必要的记录。
我们可以识别网络工作人员在后端收到的请求。
删除不需要的记录的一种方法是
我们会考虑这是一个计划B'。
我们希望在请求处理结束时删除临时会话。我们添加了代码以在应用程序控制器的after_action中销毁会话;
# application_controller.rb
after_action :clean_temporary_session
def clean_temporary_session
session.destroy if is_temporary_session?
end
这会导致删除会话记录,但是,在删除记录后立即创建新记录,因此记录数量仍在不断增长。
我们如何在请求结束时删除临时会话记录?