好吧,这是一个从内部吃掉我的问题,因此对任何帮助都表示赞赏。我有一个返回项目列表的Web服务。返回的项目数由两个变量"页面"one_answers" per_page"约束。所以一个URL
abc.com?page=10&per_page=100
将显示第10页,其中包含100个项目。我必须有效地查询此服务,并且仅获取上次获取后添加的项目。因此,假设我将所有物品缓存至#1024,然后再添加12个项目,使计数1036。如何计算页面和per_page值,以便我将所有添加的项目在单个页面中获取,同时保持per_page qunatity尽可能接近新添加的项目。例如:在这种情况下,per_page应该接近但不少于12。我已经知道缓存的最后一个计数和当前的项目总数。如果获取的页面具有先前缓存的项目,则可以。我试图找到最佳的响应,而不是最准确的响应。我使用的语言是Python,但仅仅是算法或伪用代码的语言。
注意:该服务首先给了我最早的物品。因此,最新条目始终添加到最后一页
是否有令人信服的理由不重新要求?
abc.com?page=2&per_page=1024
只是始终设置page=2
和per_page
=可缓存的项目数。
唯一的怪异情况是,添加元素的数量大于缓存的项目数,在这种情况下,您必须 abc.com?page=1&per_page=99999
因此,从需要使per_page
至少等于新项目的数量(假设您都希望它们全部在同一页面上)开始
def items_per_page(total_item_count,new_item_count):
for i in itertools.count(new_item_count):
if total_items % i>= new_item_count:
return i
total_count = 136 #including the new items
new_count = 12
ct_per_page = items_per_page(total_count,new_count)
page_num = total_count//ct_per_page + 1 # the last page
print my_url+"?page="+page_num+"&per_page="+ct_per_page
至少我很确定这总是会给您带来最佳结果:)
通过最佳我的意思是per_page
这是带有小错误框的代码,可以提供最佳的页面大小(建议的代码不会返回完全分配总数的页面大小)。
def items_per_page(total_item_count,new_item_count):
for i in itertools.count(new_item_count):
if total_items % i>= new_item_count or total_items %i == 0:
return i
total_count = 136 #including the new items
new_count = 12
ct_per_page = items_per_page(total_count,new_count)
page_num = total_count//ct_per_page + 1 # the last page
print my_url+"?page="+page_num+"&per_page="+ct_per_page