Limit the number of old messages the client requests

(imported from commit 6bff6aa0b48d46b98aa68c6e29eb569cf41f4989)
This commit is contained in:
Keegan McAllister
2012-10-19 15:42:40 -04:00
parent a80e08fbf3
commit c67e7035aa
2 changed files with 9 additions and 2 deletions

View File

@@ -3,6 +3,10 @@ var message_dict = {};
var subject_dict = {}; var subject_dict = {};
var people_hash = {}; var people_hash = {};
// We only tell the server to backfill old messages
// if we have fewer than this many messages total.
var max_messages_for_backfill = 1000;
var selected_message_class = 'selected_message'; var selected_message_class = 'selected_message';
var viewport = $(window); var viewport = $(window);
var reloading_app = false; var reloading_app = false;
@@ -14,7 +18,8 @@ var get_updates_params = {
last: -1, last: -1,
failures: 0, failures: 0,
server_generation: -1, /* to be filled in on document.ready */ server_generation: -1, /* to be filled in on document.ready */
reload_pending: 0 reload_pending: 0,
want_old_messages: true
}; };
$(function () { $(function () {
@@ -615,6 +620,7 @@ $(function () {
var get_updates_xhr; var get_updates_xhr;
var get_updates_timeout; var get_updates_timeout;
function get_updates() { function get_updates() {
get_updates_params.want_old_messages = (message_array.length < max_messages_for_backfill);
get_updates_xhr = $.ajax({ get_updates_xhr = $.ajax({
type: 'POST', type: 'POST',
url: '/json/get_updates', url: '/json/get_updates',

View File

@@ -239,6 +239,7 @@ def return_messages_immediately(request, handler, user_profile, **kwargs):
first = request.POST.get("first") first = request.POST.get("first")
last = request.POST.get("last") last = request.POST.get("last")
failures = request.POST.get("failures") failures = request.POST.get("failures")
want_old_messages = (request.POST.get("want_old_messages") == "true")
client_server_generation = request.POST.get("server_generation") client_server_generation = request.POST.get("server_generation")
client_reload_pending = request.POST.get("reload_pending") client_reload_pending = request.POST.get("reload_pending")
if first is None or last is None: if first is None or last is None:
@@ -264,7 +265,7 @@ def return_messages_immediately(request, handler, user_profile, **kwargs):
+ list(query.filter(id__gte=ptr)[:200])) + list(query.filter(id__gte=ptr)[:200]))
else: else:
messages = query.filter(id__gt=last)[:400] messages = query.filter(id__gt=last)[:400]
if not messages: if want_old_messages and not messages:
# No more messages in the future; try filling in from the past. # No more messages in the future; try filling in from the past.
messages = last_n(400, query.filter(id__lt=first)) messages = last_n(400, query.filter(id__lt=first))
where = 'top' where = 'top'