想做一個通知元件,基於MVVM,所有資料走json。清單頁帶過濾和搜尋功能。通知詳情帶上一條下一條切換。
希望能實現在無過濾和搜尋條件下時,在詳情頁內直接做到全局的上一條下一條切換;而在有過濾條件或搜尋條件時,上一條下一條在搜尋結果列表中切換。
方案1:
這是我自己想出來的方案。
在整個組件初始化時,就把本用戶下的所有通知(ID)取到本地,記到全局[store.list.all],之後當點擊詳情頁時,前端把要點擊的條目id作為參數做ajax請求,這樣詳情頁就有當前通知id,所有通知id列表。這樣的話詳情頁就可以很輕鬆的知道上一條的id、下一條的id。
當有篩選或搜尋條件時,記到全域[store.list.filter],方法同上。
優點:上一條下一條會變得非常容易實現,而且列表頁每次翻頁不需要請求資料。
缺點:如果這個使用者的通知清單非常長,那麼初始化和搜尋的時候,需要請求並記錄到[store.list]中的資料就會非常大,首頁速度可能會非常慢,而且效能會變糟。
方案2:
公司以前產品的方案。
列表頁做分頁查詢,每次請求使用page+row做參數,以一頁row條,查詢第page頁的方式查詢(例如page=3,row=10,就表示查詢第31-40條)。過濾和搜尋功能同樣。
之前的產品未實現上一條下一條切換。
不過按照這個思路繼續搞下去的話,大概會這樣:
無過濾搜索條件下,發送當前id作為參數,並帶上next或previous參數,這樣數據庫查詢時可以依靠select * from foo where id = ( select min(id) from foo where id > 4)
這個方式去查詢。
有過濾搜尋條件下,這個就比較噁心了,自己沒想出什麼好主意,大概是從列表頁點進詳情頁時保存一下搜尋狀態(這個可以做到,返回按鈕就有保存這個狀態) ,之後上一條下一條時,除了id、next,也帶上搜尋條件做查詢。就是ajax請求api寫起來會比較噁心。
優點:清單頁分頁,使用者有多少通知都不怕。
缺點:列表頁翻頁時也要請求和查詢,查詢條件複雜,後端負擔大,詳情頁上一條下一跳的ajax請求會比較難寫。
目前就這兩種思路,各有優缺點。
大家還有沒有其他思路?
回覆內容:
想做一個通知元件,基於MVVM,所有資料走json。清單頁帶過濾和搜尋功能。通知詳情帶上一條下一條切換。
希望能實現在無過濾和搜尋條件下時,在詳情頁內直接做到全局的上一條下一條切換;而在有過濾條件或搜尋條件時,上一條下一條在搜尋結果列表中切換。
方案1:
這是我自己想出來的方案。
在整個組件初始化時,就把本用戶下的所有通知(ID)取到本地,記到全局[store.list.all],之後當點擊詳情頁時,前端把要點擊的條目id作為參數做ajax請求,這樣詳情頁就有當前通知id,所有通知id列表。這樣的話詳情頁就可以很輕鬆的知道上一條的id、下一條的id。
當有篩選或搜尋條件時,記到全域[store.list.filter],方法同上。
優點:上一條下一條會變得非常容易實現,而且列表頁每次翻頁不需要請求資料。
缺點:如果這個使用者的通知清單非常長,那麼初始化和搜尋的時候,需要請求並記錄到[store.list]中的資料就會非常大,首頁速度可能會非常慢,而且效能會變糟。
方案2:
公司以前產品的方案。
列表頁做分頁查詢,每次請求使用page+row做參數,以一頁row條,查詢第page頁的方式查詢(例如page=3,row=10,就表示查詢第31-40條)。過濾和搜尋功能同樣。
之前的產品未實現上一條下一條切換。
不過按照這個思路繼續搞下去的話,大概會這樣:
無過濾搜索條件下,發送當前id作為參數,並帶上next或previous參數,這樣數據庫查詢時可以依靠select * from foo where id = ( select min(id) from foo where id > 4)
這個方式去查詢。
有過濾搜尋條件下,這個就比較噁心了,自己沒想出什麼好主意,大概是從列表頁點進詳情頁時保存一下搜尋狀態(這個可以做到,返回按鈕就有保存這個狀態) ,之後上一條下一條時,除了id、next,也帶上搜尋條件做查詢。就是ajax請求api寫起來會比較噁心。
優點:清單頁分頁,使用者有多少通知都不怕。
缺點:列表頁翻頁時也要請求和查詢,查詢條件複雜,後端負擔大,詳情頁上一條下一跳的ajax請求會比較難寫。
目前就這兩種思路,各有優缺點。
大家還有沒有其他思路?
方案一的致命一擊: 如果一個使用者用10W條通知。
方案二的致命一擊:不停的增加查詢條件的複雜度,對儲存壓力增加。
======
中庸方案
一次讀取N天資料(前提是N天的資料量基本上可控,否則此方案不實現)。
可靠方案
使用Elasticsearch

404页面基础配置404错误是www网站访问容易出现的错误。最常见的出错提示:404notfound。404错误页的设置对网站seo有很大的影响,而设置不当,比如直接转跳主页等,会被搜索引擎降权拔毛。404页面的目的应该是告诉用户:你所请求的页面是不存在的,同时引导用户浏览网站其他页面而不是关掉窗口离去。搜索引擎通过http状态码来识别网页的状态。当搜索引擎获得了一个错误链接时,网站应该返回404状态码,告诉搜索引擎放弃对该链接的索引。而如果返回200或302状态码,搜索引擎就会为该链接建立索引

Scrapy是一个开源的Python爬虫框架,它可以快速高效地从网站上获取数据。然而,很多网站采用了Ajax异步加载技术,使得Scrapy无法直接获取数据。本文将介绍基于Ajax异步加载的Scrapy实现方法。一、Ajax异步加载原理Ajax异步加载:在传统的页面加载方式中,浏览器发送请求到服务器后,必须等待服务器返回响应并将页面全部加载完毕才能进行下一步操

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。详细介绍:1、设置统一的编码方式,确保服务器端和客户端使用相同的编码方式,通常情况下,UTF-8是一种常用的编码方式,因为它可以支持多种语言和字符集;2、服务器端编码,在服务器端,确保将中文数据以正确的编码方式进行编码,再传递给客户端等等。

作为一种基于MVC模式的PHP框架,CakePHP已成为许多Web开发人员的首选。它的结构简单,易于扩展,而其中的AJAX技术更是让开发变得更加高效。在本文中,将介绍如何使用CakePHP中的AJAX。什么是AJAX?在介绍如何在CakePHP中使用AJAX之前,我们先来了解一下什么是AJAX。AJAX是“异步JavaScript和XML”的缩写,是指一种在

ajax重构指的是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更合理,提高软件的扩展性和维护性;Ajax的实现主要依赖于XMLHttpRequest对象,由于该对象的实例在处理事件完成后就会被销毁,所以在需要调用它的时候就要重新构建。

jquery ajax报错403是因为前端和服务器的域名不同而触发了防盗链机制,其解决办法:1、打开相应的代码文件;2、通过“public CorsFilter corsFilter() {...}”方法设置允许的域即可。

当提交表单时,捕获提交过程并尝试运行以下代码片段来上传文件-//File1varmyFile=document.getElementById('fileBox').files[0];varreader=newFileReader();reader.readAsText(file,'UTF-8');reader.onload=myFunc;functionmyFunc(event){ varres

CSRF代表跨站请求伪造。CSRF是未经授权的用户冒充授权执行的恶意活动。Laravel通过为每个活动用户会话生成csrf令牌来保护此类恶意活动。令牌存储在用户的会话中。如果会话发生变化,它总是会重新生成,因此每个会话都会验证令牌,以确保授权用户正在执行任何任务。以下是访问csrf_token的示例。生成csrf令牌您可以通过两种方式获取令牌。通过使用$request→session()→token()直接使用csrf_token()方法示例<?phpnamespaceApp\Http\C


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver Mac版
視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Linux新版
SublimeText3 Linux最新版