Slow panel with many virtual pages added via structure field

Dear Community, I’m building a catalog of lecturers and departments for our university but struggle with the panel’s performance.
Every department has a list of multiple persons that acted in different roles for the department in a given time. My structure field for the department page looks like this:

          prokura:
            type: structure
            fields: 
              from: 
                width: 1/4
                type: date
                display: YYYY
              to:
                type: date
                width: 1/4
                display: YYYY
              person:
               image: page.cover.toFile
               label: Person auswählen
               width: 2/4
               type: pages
               query: site.find('lecturers')
               info: " {{ page.Familienname }}, {{ page.Vorname }} (gnd: {{ page.gnd }})" 
              funktion:
                type: select
                options:
                  - Dekan
                  - Prodekan
                  - Vorsitzende
                  - stellv. Vorsitzende
                  - Sprecher 
                  - stellv. Sprecher
                  - Direktor
                  - stellv. Direktor
                  - Geschäftsführer
                  - stellv. Geschäftsführer
                default: Dekan
                help: Funktion wählen ggf. Zusätze in Notiz festhalten.
                width: 1/2
              note: 
                type: text
                width: 1/2

Unfortunately, the panel loads slow when I add a lot of persons/pages within the structure. i.e. (>16s), with 20 persons in the structure (cf. screenshot)

Summary

I’m using @texnixe’s virtual pages approach with a csv file (see guide) to create ~4000 person pages. That might be the culprit, as I’ve read that kirby does not perform well with large flat file structures [Server response time - #2 by bastianallgeier](see post by @bastianallgeier). My idea is to come into a more tree-ish structure for the persons by creating subfolders by the first letter of their familyname, but I have no clue how to do this with virtual pages. Can anyone help me with this please?

Thank you very much in advance

  • Johannes