Domanda

Sto creando un cms e non ho ancora deciso in che modo archiviare l'URL completo per una determinata pagina nella struttura.

Ogni pagina ha una lumaca (nome descrittivo della pagina) e ogni pagina ha un valore nullable (per le pagine di livello superiore) padre e figlio.

Dove posso memorizzare l'URL completo (/ prima pagina / sottopagina) per una determinata pagina? Questo dovrebbe andare nel database insieme alle altre proprietà della pagina o in qualche cache?

Aggiorna

Non è il progetto del database che sto chiedendo, piuttosto dove memorizzare l'URL completo in una determinata pagina, quindi non ho bisogno di attraversare l'intero url per ottenere la pagina richiesta dall'utente (/ prima pagina / pagina secondaria)

Aggiornamento 2

Devo trovare quale pagina appartiene all'URL attualmente richiesto. Se l'URL richiesto è / prima pagina / sottopagina, non voglio dividere l'URL e scorrere ciclicamente il database (ovviamente).

Preferirei avere l'intero URL nella tabella in modo da poter fare solo una singola query (WHERE url = '/ first-page / sub-page') ma questo non sembra l'ideale, e se cambio il lumaca per la pagina principale? Quindi devo anche aggiornare l'URL-field per tutti i discendenti.

In che modo gli altri risolvono questo problema? Lo stanno mettendo nel database? In una cache che mappa / prima pagina / sottopagina sull'ID per la pagina? O stanno dividendo l'URL richiesto e il looping nel database?

Grazie

Anders

È stato utile?

Soluzione

Conservalo in una cache, perché i server web dovranno cercare costantemente gli URL. A meno che non ti aspetti che gli URL delle pagine cambino molto rapidamente, la memorizzazione nella cache ridurrà notevolmente il carico sul database, che di solito è il tuo collo di bottiglia nei siti web basati su database.

Fondamentalmente, vuoi un dizionario che associ l'URL - > tutto ciò di cui hai bisogno per rendere la pagina. Molti server Web utilizzeranno automaticamente il file system del sistema operativo come dizionario e spesso avranno una cache integrata in grado di riconoscere quando un file cambia nel file system. Questo sarebbe probabilmente molto più efficiente di qualsiasi cosa tu possa scrivere nel tuo CMS. Pertanto, potrebbe essere meglio che CMS implementi la struttura direttamente nel file system e gestisca la mappatura aggiuntiva con collegamenti hardware o soft.

Altri suggerimenti

L'ho appena fatto per MvcCms . Sono andato con l'idea di categorie / sottocategorie di contenuti e pagine di contenuti. Quando viene creata una categoria / sottocategoria di contenuti, ricerco ricorsivamente i genitori e costruisco l'intero percorso, quindi lo memorizzo nella tabella delle categorie. Quindi, quando viene richiesta la pagina, posso trovare la pagina di contenuto corretta e scoprire quando si passa attraverso una struttura di navigazione se l'attuale navigazione in costruzione è la rotta corrente o attiva.

Questo approccio richiede alcune regole su cosa succede quando si modifica una categoria. L'approccio in questo momento è che una volta impostato il percorso completo per una sottocategoria non può essere modificato in seguito con i normali strumenti.

La fonte è un mvccms.codeplex.com

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top