DOMANDA MVC - Da piu viste a una sola pagina statica

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
Salve,
di recente dovrò creare un sito di confronta prezzi. Ipoteticamente aggiungerò 10 mila articoli presi da 51 negozi diversi. Ho una pagina php in cui dato il parametro di ricerca "scarpe nike" mi estrae gli articoli per nome ordinati per provenienza (negozio) e offerta.
Ora questa pagina riceve in $_POST l'articolo da cercare e tramite un metodo della classe controller (mvc symfony) carica le viste opportune che sono:
header
topbar
structure_all_article
only_article
footer

corregetemi se sbaglio:​
google e bing in generale i motori di ricerca indicizzano maggiormente contenuti statici

La mia domanda che puo sembrare banale è se il mio output da mandare al browser è suddiviso in viste (views) per ovvi motivi di architettura mvc è anche cio che verrà indicizzato? non viene indicizzato l'output cioè l'unione delle viste mandato a chrome o edge.

I motori di ricerca non vedranno una pagina pulita dall'header al footer contenente i miei articoli cui ti dà l'offerta di diversi negozi.
Il contenuto di queste viste è vuoto, ce solo la struttura html perchè è preso dal database sulla richiesta, quindi verrà indicizzata la struttura per contenere le informazioni degli articoli.

Allora pensavo, alla richiesta del metodo di un controller mi creo permanentemente il file statico della lista degli articoli come unica vista da mandare al browser come risultato. Eventualmente tengo sul disco del web server la pagina del risultato in memoria cache, confrontando md5 della procedura per generarlo con il file statico, salvandolo.
Quindi sul disco web server avrò in corrispondenza di "scarpe nike" la pagina completa ma statica all_articoles_s_scarpenike.html

Capite bene che se dovessi ragionare cosi anche per il dettaglio di un articolo (descrizione, numero di scarpa, colore della scarpa nike) se gli articoli sono 10 mila avrei per lo stesso template grafico

10 mila pagine statiche. E' appetibile dal motore di ricerca perchè vede tutte url del tipo
detail_article_s_scarpenike.html
detail_article_s_camicie.html

...​

con esattamente dentro le informazioni principali e non solo la struttura per contenere le informazioni di dettaglio.

Ora mi chiedo se è sensato tutto ciò, anzi se è proprio come si deve fare per far si che i motori indicizzino senza problemi.
Senza dubbio occorre aggiornare la sitemap.xml tutte le volte che si elimina/aggiunge un link alla pagina. Lo stesso i file robotx.
 
Ultima modifica:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,220
1,852
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Non ho capito benissimo ciò che intendi, ma se ho ho capito bene almeno una parte, ti direi che ti stai facendo un'idea errata sul funzionamento.
I crawler devono scaricare il contenuto della pagina per capire che testo contiene, quindi il server restituisce il documento finale (che è quello che riceve il tuo browser). Quindi che lato sviluppo usi 1 vista o ne usi 10 iniettandole una nell'altra, non cambia nulla (è tutto lavoro lato backend).

Prendi il forum ad esempio: non esistono pagine statiche (a parte il pannello di admin/mod e cose simili, che ha un solo URL), l'url della pagina è l'oggetto che inserisci quando crei il thread. I crawler guardano anche le "keywords" (che metti nell'head con i tag meta).
Il contenuto indicizzato che ti viene mostrato poi nella pagina di ricerca di Google sono le prime righe della pagina.

Ad ogni modo utilizzando un framework è del tutto normale avere un controller che renderizza una vista, e avere quella vista che magari renderizza 2 o 3 altre viste. Il contenuto che viene visto da un crawler è sempre il risultato finale.
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,391
11,480
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
Per essere indicizzato correttamente il sito necessita del SEO.
Deve rispettare questi standard per essere maggiormente indicizzato
 

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
I crawler devono scaricare il contenuto della pagina per capire che testo contiene, quindi il server restituisce il documento finale (che è quello che riceve il tuo browser). Quindi che lato sviluppo usi 1 vista o ne usi 10 iniettandole una nell'altra, non cambia nulla (è tutto lavoro lato backend).
Il contenuto che viene visto da un crawler è sempre il risultato finale.
La risposta che volevo. E lo ottiene in esecuzione? cioè si mette in mezzo tra il server il client browser dell'utente? Non mi convince del tutto. Scusa allora è il crawler a fare la richiesta della pagina e a leggere il risultato fingendosi da browser, ottenuto il risultato lo elabora.


Stavo raggionando al contrario, in cui il crawler settaccia la rete in cerca di contenuto e come fa? andando a vedere le url in cui ne ha i permessi. Normalmente le viste sono messe nella cartella pubblica cosichè a differenza dei controller e dei model si ha il permesso di leggerli dall'esterno. Il crawler quindi legge i file delle viste separatamente. In questo modo come diciamo non ha un'unica pagina visibile ma tante viste fino a che non chiama l'url del motodo controller che gli restituisce l'unione delle viste.
Post unito automaticamente:

Skills07 ha detto:
Per essere indicizzato correttamente il sito necessita del SEO.
Esatto. sempre ragionando al contrario, in cui è il crawler a settacciare nel web server, se è l'output che viene letto dal crawler allora analizzerà solo alcune ricerche e NON LA MAGGIOR PARTE.
Se io creassi invece pagine statiche all'apparenza innutili si metterebbe a elaborare piu pagine anzi tante pagine quante sono le ricerche. Ci sarà di sicuro un limite imposto.

Se me lo consentite l'idea è quello di passare da un sito dinamico fatto con diverse viste ad un sito con tante pagine statiche utile solo al crawler.
 
Ultima modifica:

pabloski

Utente Èlite
2,868
916
è il crawler a fare la richiesta della pagina e a leggere il risultato fingendosi da browser, ottenuto il risultato lo elabora.

Anni fa avresti avuto ragione sulla parte precedente, ovvero che i crawler indicizzano __SOLO__ contenuti statici. Ma non è così allo stato attuale. I crawler fanno cose da pezzi, arrivando al punto di eseguire codice javascript e infilarsi nei file swf.

Può sembrare assurdo, ma se il crawler s'imbatte in qualche pagina che ha un form che invia un post al tuo script php, tenterà di provare a mandare richieste post allo script. Magari usando stringhe corrispondenti al topic che secondo lui la pagina col form rispecchia.

Tuttavia è ovvio che facilitargli la vita è meglio. E per questo ( e per altre ragioni ) è tornata in voga la pratica di costruire pagine statiche. Esistono framework che fanno proprio questo e staticizzano siti dinamici.

Giusto un suggerimento. Faresti meglio ad usare get per passare la stringa di ricerca, all'interno dell'url. In questo modo è possibile usare l'url completo negli href ( nei link ). Seguirli, per i crawler, è banale. E si comportano allo stesso modo dei contenuti statici.


Normalmente le viste sono messe nella cartella pubblica cosichè a differenza dei controller e dei model si ha il permesso di leggerli dall'esterno. Il crawler quindi legge i file delle viste separatamente. In questo modo come diciamo non ha un'unica pagina visibile ma tante viste fino a che non chiama l'url del motodo controller che gli restituisce l'unione delle viste.

I crawler stanano pure le directory listabili e vanno ad elencare i file che ci sono dentro. Non è dato sapere quali azioni intraprendano specificamente nei vari casi, ma, per esempio, se trovano file di testo li vanno a leggere e si fanno un'idea del topic del sito.

Insomma, il loro comportamento è dannatamente complesso. Ma per andare sul sicuro, laddove può renderglierli la vita più semplice, fallo. Anche perchè un sito staticizzato pesa meno sulla cpu del server e le pagine caricano più velocemente.
 
  • Mi piace
Reazioni: DispatchCode

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
Senza dubbio occorre aggiornare la sitemap.xml tutte le volte che si elimina/aggiunge un link alla pagina. Lo stesso i file robotx
Nel caso dell'output letto dal crawler allora la sitemap avrà solo due o tre link alla richiesta di articoli esempio

Invece staticizzando il tutto avrò automaticamente una lunga lista

Non è sbagliato il discorso che si è fatto. Accetto il consiglio di @pabloski
...
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,220
1,852
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Viene esplorata la site map del sito, normalmente. Da lì vengono raccolti i link, e in generale qualsiasi link viene esplorato (o meglio, catalogato ed esplorato).
Normalmente viene anche letto un file che contiene delle regole che il crawler deve seguire per navigare il sito (robots.txt).

Un sistemista che si può definire tale andrà sicuramente a gestire gli accessi alle cartelle del server. Tu mica accedi direttamente alle cartelle del sito di Tom's, ad esempio.

Ti lascio qualche link:

EDIT:
mi sono spostato a fare altro ed ho visto che sono stato preceduto... ho inviato comunque, visto che avevo scritto.
 
  • Mi piace
Reazioni: BigIssue

pabloski

Utente Èlite
2,868
916
Nel caso dell'output letto dal crawler allora la sitemap avrà solo due o tre link alla richiesta di articoli esempio

Invece staticizzando il tutto avrò automaticamente una lunga lista

Non è sbagliato il discorso che si è fatto. Accetto il consiglio di @pabloski
...

Sapendo quali saranno le categorie presenti, potresti benissimo generare una sitemap con una raffica di url di quel tipo. Il tutto mantenendo la natura dinamica del sito.

Ma ovviamente, visto che oggi abbiamo gli strumenti, è abbastanza sensato tentare di convertire in statico tutto ciò che è convertibile. Tanto per fare un esempio, se i contenuti di quelle ricerche cambiassero ad ogni singola ricerca, allora non potresti staticizzare niente.
 
  • Mi piace
Reazioni: BigIssue

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
... se i contenuti di quelle ricerche cambiassero ad ogni singola ricerca, allora non potresti staticizzare niente.

Ho libera scelta in quello. Il progetto non me lo ha assegnato nessuno. Cerco dei progetti che posso mostrare sul portfolio del sito personale. Ci tengo peró a realizzare il confronta prezzi perche mi pare un progetto di programmazione interessante senza complicarsi troppo la vita.

In circolazione ce ne sono. Esempi
trovaprezzi.it
shopalike.it
shopello.it

Non potendo metterci la pubblicità perchè gia i negozi un po la fanno da padrone Se ho diciamo 500 visite uniche al mese. 20 click di visite da un utente per giorno da almeno 10 utenti al giorno come posso ripagarmi della spesa dell hosting e guadagnare centesimi sul traffico adsl in entrata? Ha senso che qualcuno paghi perche hai del traffico?



Inviato da BLN-L21 tramite App ufficiale di Tom\'s Hardware Italia Forum
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,220
1,852
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Se vuoi realizzare un confronta prezzi comunque dovrai fare dello scraping anche (non vedo tante alternative, poi magari mi sbaglio). Scegli bene anche il DB da utilizzare (oltre che il linguaggio).

In merito al resto puoi provare con un pò di pubblicità, ma non si guadagna molto. Puoi anche mettere fuori il banner per le donazioni (ce ne sono di svariati tipi); ma su questo non sono ferrato, lascio agli altri.
 

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
E' proprio quello che volevo evitare.

Pensavo molto piu spartano in cui occorre investirci tempo diciamo almeno 2 ore al giorno per inserire gli articoli e cancellare gli articoli che non hanno piu url che manda al negozio (si spera pochi)

Lo realizzo principalmente perchè ho in mente di mostrare che so realizzare un sito che mostra i prodotti, li cerca, gli amministra che possiede un aspetto curato e funzionale, senza essere troppo curato nei particolari. Arrichiendo di almeno 3 siti il mio portfolio. Dovrebbe essere piu fattibile cosi Abbastanza easy. In un mese anche partime lo si realizza o forse anche in meno tempo. Sono almeno 10 pagine, il codice è riutilizzabile in piu pagine, con l'impostanzione statica anche se è dinamico.

Come dicevo non deve essere un motore di ricerca (ahime pultroppo) ma un motore di prodotti.
Quindi i prodotti li inserirò io, se possibile dalla lista degli articoli che mi fornirà il negoziante. Proprio perchè deve essere solo funzionale. non ho trovato "motori di ricerca" semplici e nemmeno librerie per lo scrapping.

Ho trovato elasticsearch

ma capire il codice richiede investire tempo e fatiche. Con l'elettronica sto adando avanti, con l'università anche. Fare qualcosa di bassa qualità mi fa bene perchè spendo tempo solo sulle capacità e competenze e anche su quelle nuove.

Pare strano non farlo con lo web scraping ma non è questa la strategia.
Anzi pensavo di farci della pubblicità dove non arriva il motore di ricerca allora sposto gli utenti dove so che utilizzano lo scrapping. Dove non posso acquistare dal sito allora sposto gli utenti dove so che tra i negozi di uno stesso negozio si possa acquistare come amazon, ebay per esempio che hanno negozionanti al loro interno.
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,391
11,480
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
io ti consiglio di fare un profilo free su amazon AWS ti fai li un bel db, hosti li la tua app e vedi come funziona.
 

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
io ti consiglio di fare un profilo free su amazon AWS ti fai li un bel db, hosti li la tua app e vedi come funziona.
Buongiorno @Skills07
Posso provare ottimo suggerimento. Unica pecca che lo stesso amazon gia al suo interno fa confronta prezzi. Non sarebbe meglio fare tutto su un sito esterno ad amazon: zabexpens.it
Intendi solo host e il db ma poi il sito non è interno ad amazon?
 
Ultima modifica:

Skills07

Head of Development
Staff Forum
Utente Èlite
35,391
11,480
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
no perchè se ti serve puoi comprare un dominio a parte e agganciarlo all'hosting di amazon
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili