3 messaggi dal 03 dicembre 2013
innanzitutto spero di essere nel forum giusto ..

Buongiorno a tutti

Ho un sito scritto in classic ASP (www.tuttosuperenalotto.it) in hosting condiviso su Aruba dove è impossibile attivare la compressione GZIP dei file in uscita. Girovagando in internet alla ricerca di una soluzione al problema mi sono imbattuto nel seguente script ASP.NET che dovrebbe effettuare la compressione dell'HTML , ecco il codice :


Private Sub Application_PostReleaseRequestState(ByVal sender As Object, ByVal e As EventArgs)
'Prendiamo l'oggetto HttpApplication
Dim app As HttpApplication = DirectCast(sender, HttpApplication)

'Il MIME type della risorsa restituita
Dim strContentType As String = app.Response.ContentType.ToLower()

'Variabile che conterrà l'header Accept-Encoding del client
Dim strAcceptEncoding As String
'Usiamo una classe interna di ASP .Net per avere il valore dell'header Accept-Encoding
Dim worker As HttpWorkerRequest = _
DirectCast(app.Context, IServiceProvider).GetService(GetType(HttpWorkerRequest))

strAcceptEncoding = worker.GetKnownRequestHeader(HttpWorkerRequest.HeaderAcceptEncoding)

'Metodo meno efficiente per avere l'header Accept-Encoding
'strAcceptEncoding = app.Request.Headers("Accept-Encoding")

'Controlliamo che la richiesta corrente
'1) accetti qualche forma di compressione
'2) contenga qualche formato testuale, javascript o XML
'3) non sia una richiesta AJAX
If Not String.IsNullOrEmpty(strAcceptEncoding) _
AndAlso ( _
strContentType.EndsWith("javascript") _
OrElse strContentType.StartsWith("text/") _
OrElse strContentType.EndsWith("xml") _
) _
AndAlso app.Request("HTTP_X_MICROSOFTAJAX") Is Nothing Then

strAcceptEncoding = strAcceptEncoding.ToLower()

'Se il client supporta gzip
If strAcceptEncoding.Contains("gzip") OrElse strAcceptEncoding = "*" Then
'Aggiungiamo un filtro di compressione GZip al responso
'basandoci su quello originale (dati non compressi)
app.Response.Filter = New System.IO.Compression.GZipStream(app.Response.Filter, _
System.IO.Compression.CompressionMode.Compress)
'Aggiungiamo l'header Content-Encoding che informa il client
'che il contenuto è compresso con gzip
app.Response.AppendHeader("Content-Encoding", "gzip")
ElseIf strAcceptEncoding.Contains("deflate") Then
'Come prima ma utilizziamo l'algoritmo deflate
app.Response.Filter = New System.IO.Compression.DeflateStream(app.Response.Filter, _
System.IO.Compression.CompressionMode.Compress)
app.Response.AppendHeader("Content-Encoding", "deflate")
End If
End If
End Sub


l'autore consiglia di inserire tale codice nel file GLOBAL.ASAX. Sono ignorante in materia di .NET , comunque ho inserito nella root del sito un GLOBAL.ASAX con il codice di cui sopra (ho letto
che GLOBAL.ASA , specifico di classic ASP , e GLOBAL.ASAX possono coesistere) così strutturato :

<SCRIPT LANGUAGE="VB" RUNAT="SERVER">
Private Sub Application_PostReleaseRequestState(ByVal sender As Object, ByVal e As EventArgs)
'Prendiamo l'oggetto HttpApplication
Dim app As HttpApplication = DirectCast(sender, HttpApplication)
..................
..................
..................
end sub
</SCRIPT>

inoltre , come da indicazioni dell'autore , ho implementato il "web.config" con questo codice :

<configuration>
<system.web>
<compilation>
<buildProviders>
<remove extension=".js" />
<add extension=".js" type="System.Web.Compilation.PageBuildProvider" />
<add extension=".css" type="System.Web.Compilation.PageBuildProvider" />
<add extension=".htm" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>
<httpHandlers>
<add verb="*" path="*.js" type="System.Web.StaticFileHandler" />
<add verb="*" path="*.css" type="System.Web.StaticFileHandler" />
<add verb="*" path="*.htm" type="System.Web.UI.PageHandlerFactory" />
</httpHandlers>
</system.web>
</configuration>

il tutto non da errori , però credo che il GLOBAL.ASAX non viene mai eseguito perchè il sito non "si chiude mai" e di conseguenza i file GLOBAL.ASA e GLOBAL.ASAX non sono mai richiamati.

Qualcuno sa come poter forzare l'avvio del file GLOBAL.ASAX o esiste qualche altro modo per forzare l'esecuzione del codice legato alla compressione dei files ? ad esempio creare un file .ASX con tale
codice da inserire nella root del sito ?

grazie
Modificato da Antonio1958 il 14 luglio 2021 12:30 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.