目前分页长文本的最佳做法是什么,例如,将长篇文章拆分为多个页面?
我能想到的两个选项:
最好的方法是什么?有什么我想念的吗?
答案 0 :(得分:0)
我的建议是采用第一种方法,并将切片结果放入缓存(如memcached),这样您就可以灵活地更改页面长度,而无需在每次提供页面时对页面进行切片。 / p>
答案 1 :(得分:0)
如果文本通常小于10MB,则在操作中拆分文本是完全合理的。 Rails的内存开销比这大得多,所以你不应该担心。
但是,如果文本通常超过10MB,则应直接从数据存储中选择子字符串。例如,如果您使用的是MySQL和ActiveRecord,则可以执行以下操作:
# assuming fields `id`, and `body`
class Article < ActiveRecord
def self.find_page(id, page_number, page_size = 10_000)
page_number = page_number.to_i
page_size = page_size.to_i
pos = page_size * (page_number - 1)
# http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring
find(id, :select => "id, SUBSTRING(body, #{pos}, #{page_size}) AS body")
end
end
(10MB当然是任意数字。选择一个适合你的人)