缓存弄乱了我的直播
Caching is messing up my Live-Stream
我正在尝试使用 SSE 在我的 rails 应用程序中进行流式传输。
这段代码有效,它正在流式传输到我的浏览器,但是 count
似乎被缓存了,因为当我通过控制台更改它时,它在这个控制器中保持不变。
class SseController < ActionController::Base
include ActionController::Live
def stream
response.headers['Content-Type'] = 'text/event-stream'
sse = SSE.new(response.stream)
begin
loop do
count = Email.where(:read => false, :folder_id => nil, :deleted => false, :outgoing => false, :spam => false).count
sse.write(count, :event => 'refresh')
sleep 10
end
rescue
ensure
sse.close
end
end
end
当我在控制台中执行此部分时。它按预期工作。
loop do
count = Email.where(:read => false, :folder_id => nil, :deleted => false, :outgoing => false, :spam => false).count
sse.write(count, :event => 'refresh')
sleep 10
end
如何在我的 SseController (::Live) 中停用缓存或读取正确的计数?
好的,找到了:
只需要这样做:
Email.uncached do
count = ...
end
我正在尝试使用 SSE 在我的 rails 应用程序中进行流式传输。
这段代码有效,它正在流式传输到我的浏览器,但是 count
似乎被缓存了,因为当我通过控制台更改它时,它在这个控制器中保持不变。
class SseController < ActionController::Base
include ActionController::Live
def stream
response.headers['Content-Type'] = 'text/event-stream'
sse = SSE.new(response.stream)
begin
loop do
count = Email.where(:read => false, :folder_id => nil, :deleted => false, :outgoing => false, :spam => false).count
sse.write(count, :event => 'refresh')
sleep 10
end
rescue
ensure
sse.close
end
end
end
当我在控制台中执行此部分时。它按预期工作。
loop do
count = Email.where(:read => false, :folder_id => nil, :deleted => false, :outgoing => false, :spam => false).count
sse.write(count, :event => 'refresh')
sleep 10
end
如何在我的 SseController (::Live) 中停用缓存或读取正确的计数?
好的,找到了:
只需要这样做:
Email.uncached do
count = ...
end