A parte il sito web statico, l'attività sarebbe piuttosto casuale:
-
Non è possibile eseguire la scansione del codice sorgente per trovare i collegamenti, poiché è possibile generare collegamenti. Immagina il seguente caso:
In una pagina, quando un utente effettua un'azione, viene aggiunta un'immagine al DOM (quindi in realtà non hai alcun elemento <img/>
in HTML in origine). Il collegamento a un'immagine è assegnato da JavaScript. Per trovare una parte di questo collegamento, JavaScript esegue una richiesta AJAX; l'altra parte è hardcoded nel codice JavaScript. L'URI finale è link
Il server riceve la richiesta per l'immagine e riscrive l'URL per link . Sembra che il nuovo URI indichi una risorsa dinamica che genera l'immagine prendendone una esistente (/photos/catalog/133d6566-3c98-4690-be4a-caad41c0e21d.jpg) e aggiungendo un copyright.
Potresti tracciare automaticamente questa situazione?
-
Non puoi fare affidamento sui log, poiché il fatto che la risorsa non sia stata richiesta per un po 'di tempo non significa che non sarà mai richiesta.
L'unica alternativa valida è:
-
Elenca tutte le risorse sul sito web,
-
Raccogli le statistiche dai log per filtrare le risorse utilizzate negli ultimi N mesi. Non dimenticare una quantità enorme di piccoli problemi che possono sorgere: ricorda che c'è la riscrittura degli URL, che devi canonizzare le richieste, che ci sono pagine predefinite (http://example.com/index.html sarà per lo più chiamato link ), ecc.
-
In base a tali statistiche, dimentica le risorse in uso: non è necessario rimuoverle.
-
Per le risorse rimanenti, prova a indovinare per ognuno il contesto in cui potrebbe essere utilizzato, e controlla se lo è. Quest'ultimo passaggio è estremamente complesso per un programma e richiede cervello umano (o anni e anni di R & D).
Come nota a margine, sai che invece di Url.Content
, ASP.NET MVC 4 permette di usare ~ direttamente, come questo:
<a href="~/Products/Edit/458">Edit</a>