SharePoint 2013Una delle novità dell'interfaccia di SharePoint 2013 è il componente denominato "Minimal Download Strategy" (che da ora in poi chiameremo MDS). Questo componente è un vero e proprio framework di navigazione, che fa uso sia di tecnologie server-side che di script client-side, in grado di aumentare notevolmente le performance al load delle informazioni di ogni pagina di SharePoint (comprese quelle di amministrazione) e di rendere ogni pagina dei nostri siti SharePoint molto più simile ad una vera e propria Rich Internet Application, minimizzando l'utilizzo dei post-back nelle pagine e renderizzando il contenuto tramite una piccola animazione.

L'MDS, disponibile all'interno dei template di sito di tipo: "Team", "Community", "Wiki", "Projects", "App" e "Blog", raggiunge il proprio obbiettivo scaricando dal server solamente la porzione di pagina il cui contenuto subisce effettivamente un cambiamento, rispetto al resto della pagina. Il meccanismo è stato implementato attraverso la scrittura di un "download manger" in grado di capire quali controlli e/o quali content placeholder presenti nella master page utilizzata dal vostro sito SharePoint 2013, hanno la necessità di essere aggiornati in base a quello che l'utente finale ha richiesto. Questo significa che eventuali controlli o master page personalizzate, dovranno supportare l'MDS se vogliono trarre vantaggio dalle sue funzionalità in fase di navigazione.

Questo componente di gestione del download minimale di contenuto, è presente all'interno dell'application page "start.aspx", presente all'interno della directory "LAYOUTS" e di conseguenza disponibile per tutti i siti SharePoint 2013. La pagina "start.aspx" viene infatti utilizzata per l'intera navigazione dei nostri siti SharePoint 2013, prendendo come parametro di querystring la pagina richiesta dall'utente. Infatti, per vedere l'MDS in azione, oltre a notare l'animazione presente di default al load di ogni pagina di un sito SharePoint 2013 (creato con uno dei template sopracitati) e ad ogni click su qualche link presente nell'intefaccia utente, è possibile controllare l'URL. Infatti, ogni pagina del sito può essere reggiunta utilizzando un'ancora a rappresentare l'indirizzo relativo della pagina vera e propria che dovrà essere effettivamente richiesta al server. Ecco quindi che la classica home di un sito creato a partire dal template "Team site", ha il seguente indirizzo:

http://sp2013/_layouts/15/start.aspx#/SitePages/Home.aspx


Questo indirizzo dice all'MDS quale pagina caricara. Internamente il download manager conosce qual'è il contenuto della pagina che può variare rispetto al resto e lo presenta all'utente. Questo meccanismo, abilitato di default su tutti i siti SharePoint 2013 creati con uno dei template sopracitati, può essere anche disabilitato a livello di singolo sito. Per farlo, abbiamo a disposizione la proprietà EnableMinimalDownload all'interno della classe SPWeb, proprietà che possiamo valorizzare sia tramite server object model, che tramite Powershell.

Ecco l'estratto di codice Powershell per disabilitare l'azione del componente MDS su un particolare sito SharePoint 2013:

$site = New-Object Microsoft.SharePoint.SPSite("http://sp2013/TestMDS") 

$web = $site.OpenWeb()
$web.EnableMinimalDownload = $false
$web.Update()

Se vogliamo invece, possiamo modificare questo comportamento anche da remoto. Ecco l'estratto di codice che dobbiamo utilizzare nel caso di un applicazione che si avvantaggia del Client Object Model di SharePoint 2013:

using (ClientContext context = new ClientContext("http://sp2013/TestMDS")) 

{
Web web = context.Web;
web.EnableMinimalDownload = enable;
context.ExecuteQuery();
}

Una volta disabilitato, tutti i link presenti nell'interfaccia del vostro sito SharePoint 2013 verranno renderizzati senza l'utilizzo della pagina "start.aspx", come eravamo abituati nella precedente versione del prodotto.

Il consiglio è di disabilitare questo comportamento solo se in conflitto con le vostre applicazioni custom.
Se volete informazioni più dettagliate sull’argomento, vi rimando a questi post: