cari
Rumahpembangunan bahagian belakangtutorial phpjavascript - 讨论个通知列表和详情的API设计

想做一个通知组件,基于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

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Di luar gembar -gembur: Menilai peranan PHP hari iniDi luar gembar -gembur: Menilai peranan PHP hari iniApr 12, 2025 am 12:17 AM

PHP kekal sebagai alat yang kuat dan digunakan secara meluas dalam pengaturcaraan moden, terutamanya dalam bidang pembangunan web. 1) PHP mudah digunakan dan diintegrasikan dengan lancar dengan pangkalan data, dan merupakan pilihan pertama bagi banyak pemaju. 2) Ia menyokong penjanaan kandungan dinamik dan pengaturcaraan berorientasikan objek, sesuai untuk membuat dan mengekalkan laman web dengan cepat. 3) Prestasi PHP dapat ditingkatkan dengan caching dan mengoptimumkan pertanyaan pangkalan data, dan komuniti yang luas dan ekosistem yang kaya menjadikannya masih penting dalam timbunan teknologi hari ini.

Apakah rujukan yang lemah dalam PHP dan bilakah mereka berguna?Apakah rujukan yang lemah dalam PHP dan bilakah mereka berguna?Apr 12, 2025 am 12:13 AM

Dalam PHP, rujukan lemah dilaksanakan melalui kelas lemah dan tidak akan menghalang pemungut sampah daripada menebus objek. Rujukan lemah sesuai untuk senario seperti sistem caching dan pendengar acara. Harus diingat bahawa ia tidak dapat menjamin kelangsungan hidup objek dan pengumpulan sampah mungkin ditangguhkan.

Terangkan kaedah sihir __invoke dalam PHP.Terangkan kaedah sihir __invoke dalam PHP.Apr 12, 2025 am 12:07 AM

Kaedah \ _ \ _ membolehkan objek dipanggil seperti fungsi. 1. Tentukan kaedah \ _ \ _ supaya objek boleh dipanggil. 2. Apabila menggunakan sintaks $ OBJ (...), PHP akan melaksanakan kaedah \ _ \ _ invoke. 3. Sesuai untuk senario seperti pembalakan dan kalkulator, meningkatkan fleksibiliti kod dan kebolehbacaan.

Terangkan serat dalam Php 8.1 untuk keserasian.Terangkan serat dalam Php 8.1 untuk keserasian.Apr 12, 2025 am 12:05 AM

Serat diperkenalkan dalam Php8.1, meningkatkan keupayaan pemprosesan serentak. 1) Serat adalah model konkurensi ringan yang serupa dengan coroutine. 2) Mereka membenarkan pemaju mengawal aliran pelaksanaan tugas secara manual dan sesuai untuk mengendalikan tugas I/O-intensif. 3) Menggunakan serat boleh menulis kod yang lebih cekap dan responsif.

Komuniti PHP: Sumber, Sokongan, dan PembangunanKomuniti PHP: Sumber, Sokongan, dan PembangunanApr 12, 2025 am 12:04 AM

Komuniti PHP menyediakan sumber dan sokongan yang kaya untuk membantu pemaju berkembang. 1) Sumber termasuk dokumentasi rasmi, tutorial, blog dan projek sumber terbuka seperti Laravel dan Symfony. 2) Sokongan boleh didapati melalui saluran StackOverflow, Reddit dan Slack. 3) Trend pembangunan boleh dipelajari dengan mengikuti RFC. 4) Integrasi ke dalam masyarakat dapat dicapai melalui penyertaan aktif, sumbangan kepada kod dan perkongsian pembelajaran.

PHP vs Python: Memahami PerbezaanPHP vs Python: Memahami PerbezaanApr 11, 2025 am 12:15 AM

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

PHP: Adakah ia mati atau hanya menyesuaikan diri?PHP: Adakah ia mati atau hanya menyesuaikan diri?Apr 11, 2025 am 12:13 AM

PHP tidak mati, tetapi sentiasa menyesuaikan diri dan berkembang. 1) PHP telah menjalani beberapa lelaran versi sejak tahun 1994 untuk menyesuaikan diri dengan trend teknologi baru. 2) Ia kini digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan bidang lain. 3) Php8 memperkenalkan pengkompil JIT dan fungsi lain untuk meningkatkan prestasi dan pemodenan. 4) Gunakan OPCACHE dan ikut piawaian PSR-12 untuk mengoptimumkan prestasi dan kualiti kod.

Masa Depan PHP: Adaptasi dan InovasiMasa Depan PHP: Adaptasi dan InovasiApr 11, 2025 am 12:01 AM

Masa depan PHP akan dicapai dengan menyesuaikan diri dengan trend teknologi baru dan memperkenalkan ciri -ciri inovatif: 1) menyesuaikan diri dengan pengkomputeran awan, kontena dan seni bina microservice, menyokong Docker dan Kubernetes; 2) memperkenalkan pengkompil JIT dan jenis penghitungan untuk meningkatkan prestasi dan kecekapan pemprosesan data; 3) Berterusan mengoptimumkan prestasi dan mempromosikan amalan terbaik.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa