performance question: page speed test (yslow / page_speed)

Topics: General
Apr 26, 2011 at 2:18 PM

Hi guys

Our team at http://www.holisticware.net did some tests regarding performance.
Mostly speed and SEO, but lets leave SEO for later on.

Yslow test show on the average

  • avg=80  75-95/100 points for small web site or blog
  • avg=85  80-90/100 for yslow v2
  • avg=60 for classic test

are optimizations (compression) discouraged? We have noticed some minor problems during saving etc and
are investigating them, because sometimes we tweaked on several things at once and have to determine
what the problem is...

Our site is currently at 99/100 for small-site-or-blog, 95 for yslow2 and 88 with classic...

New version will be out today 2011-04-26 and will post web.config and other tweaks in shorter form here, but
more could be found on our site: http://www.holisticware.net

thanks and regards

Mel 

 

Apr 27, 2011 at 9:33 AM

Hi again

web.config team wrote and tested:

 

<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<configSections>
		<sectionGroup name="blowery.web">
			<section name="httpCompress"
				type="blowery.Web.HttpCompress.SectionHandler, blowery.Web.HttpCompress"
			/>
		</sectionGroup>
		<section name="dotNetOpenAuth"
			type="DotNetOpenAuth.Configuration.DotNetOpenAuthSection"
			requirePermission="false" allowLocation="true"
		/>
	</configSections>


	<blowery.web>
		<httpCompress preferredAlgorithm="gzip" compressionLevel="high">
			<excludedMimeTypes>
				<add type="image/jpeg" />
				<add type="image/gif" />
				<add type="image/png" />
				<add type="application/zip" />
				<add type="application/x-zip-compressed" />
				<add type="application/x-gzip-compressed" />
				<add type="application/x-compressed" />
				<add type="application/octet-stream" />
				<add type="application/pdf" />
			</excludedMimeTypes>
			<excludedPaths>
				<add path="Composite/*" />
				<add path="Composite/top.aspx" />
				<add path="WebResource.axd" />
				<add path="ScriptResource.axd" />
			</excludedPaths>
		</httpCompress>
	</blowery.web>

	<system.net>
		<mailSettings>
			<smtp deliveryMethod="Network">
				<network host="localhost" />
			</smtp>
		</mailSettings>
	</system.net>





	<system.web>
		<customErrors mode="RemoteOnly">
			<error statusCode="404" redirect="Renderers/FileNotFoundHandler.ashx" />
		</customErrors>
		<compilation debug="true" targetFramework="4.0" optimizeCompilations="true">
			<assemblies>
				<add assembly="System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
				<add assembly="System.Workflow.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
				<add assembly="System.Workflow.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
				<add assembly="System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
			</assemblies>
		</compilation>
		<httpRuntime maxRequestLength="20480" />
		<xhtmlConformance mode="Strict" />
		<trace enabled="false" traceMode="SortByTime" requestLimit="100" writeToDiagnosticsTrace="false" pageOutput="true" />
		<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
			<controls>
				<add tagPrefix="aspui" namespace="Composite.Core.WebClient.UiControlLib" assembly="Composite" />
				<add tagPrefix="control" tagName="httpheaders" src="~/Composite/controls/HttpHeadersControl.ascx" />
				<add tagPrefix="control" tagName="styleloader" src="~/Composite/controls/StyleLoaderControl.ascx" />
				<add tagPrefix="control" tagName="scriptloader" src="~/Composite/controls/ScriptLoaderControl.ascx" />
			</controls>
		</pages>

		<httpModules>
			<add name="LoggerHostnameHandler" type="Composite.Core.WebClient.Logging.WCF.LoggerHostnameHandler" />
			<add name="ApplicationOfflineCheck" type="Composite.Core.Application.ApplicationOfflineCheckHttpModule" />
			<add name="AjaxResponseHandler" type="Composite.Core.WebClient.Ajax.AjaxResponseHttpModule" />
			<add name="CompositeAdministrativeResponseFilter" type="Composite.Core.WebClient.HttpModules.AdministrativeResponseFilterHttpModule" />
			<add name="CompositeAdministrativeAuthorization" type="Composite.Core.WebClient.HttpModules.AdministrativeAuthorizationHttpModule" />
			<add name="CompositeRequestInterceptor" type="Composite.Core.WebClient.Renderings.RequestInterceptorHttpModule" />
			<add name="CompositeAdministrativeDataScopeSetter" type="Composite.Core.WebClient.HttpModules.AdministrativeDataScopeSetterHttpModule" />
			<add name="CompositeAdministrativeCultureSetter" type="Composite.Core.WebClient.HttpModules.AdministrativeCultureSetterHttpModule" />


			<!--
			<add name="CompressionModule" type="blowery.Web.HttpCompress.HttpModule, blowery.web.HttpCompress"/>
			-->

		</httpModules>
		<authentication mode="Forms" />
	</system.web>
	<system.codedom>
		<compilers>
			<compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/warnaserror-" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
				<providerOption name="CompilerVersion" value="v4.0" />
			</compiler>
			<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" compilerOptions="/optioninfer+" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
				<providerOption name="CompilerVersion" value="v4.0" />
			</compiler>
		</compilers>
	</system.codedom>

	<!--         
		The system.webServer section is required for running ASP.NET AJAX under 
		Internet Information Services 7.0.  
		It is not necessary for previous version of IIS.    
		
		mc++ from here below page-speed optimizations
		- compression
		- caching
		- headers, etags
	-->
	<system.webServer>
		<httpProtocol>
			<customHeaders>
				<clear/>
				<add name="ETag" value="" />
				<remove name="Vary"></remove>
				<add name="Vary" value="Accept-Encoding"></add>
			</customHeaders>
		</httpProtocol>

		<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
			<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
			<dynamicTypes>
				<add mimeType="text/*" enabled="true"/>
				<add mimeType="message/*" enabled="true"/>
				<add mimeType="application/javascript" enabled="true"/>
				<add mimeType="text/javascript" enabled="true"/>
				<add mimeType="text/javascript1.0" enabled="true"/>
				<add mimeType="text/javascript1.2" enabled="true"/>
				<add mimeType="text/javascript1.4" enabled="true"/>
				<add mimeType="text/x-javascript" enabled="true"/>
				<add mimeType="text/jscript" enabled="true"/>
				<add mimeType="application/x-javascript" enabled="true"/>
				<add mimeType="*/*" enabled="false"/>
			</dynamicTypes>
			<staticTypes>
				<add mimeType="text/*" enabled="true"/>
				<add mimeType="message/*" enabled="true"/>
				<add mimeType="application/javascript" enabled="true"/>
				<add mimeType="text/javascript" enabled="true"/>
				<add mimeType="text/javascript1.0" enabled="true"/>
				<add mimeType="text/javascript1.2" enabled="true"/>
				<add mimeType="text/javascript1.4" enabled="true"/>
				<add mimeType="text/x-javascript" enabled="true"/>
				<add mimeType="text/jscript" enabled="true"/>
				<add mimeType="application/x-javascript" enabled="true"/>
				<add mimeType="*/*" enabled="false"/>
			</staticTypes>
		</httpCompression>
		<urlCompression doStaticCompression="true" doDynamicCompression="true"/>

		<staticContent>
			<remove fileExtension=".js" />
			<mimeMap fileExtension=".js" mimeType="text/javascript" />
			<clientCache cacheControlMode="UseExpires" httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" />
		</staticContent>

		<!--
			<clientCache cacheControlMode="UseMaxAge"	cacheControlMaxAge="7.00:00:00" />

			<mimeMap fileExtension=".js" mimeType="application/javascript" />
			<mimeMap fileExtension=".js" mimeType="application/x-javascript" />
		<staticContent>
			Does not work!
			<mimeMap fileExtension=".js" mimeType="application/javascript" />
			trick to getting compression working is a requirement berried deep in TechNet. 
			You must hit the same page on IIS 7 with two different IP addresses
			from two different machines. If you keep trying to hit the page with the 
			same machine it will never compress the page. 
			
			Error 500 internal server error
			<clientCache cacheControlMode="UseExpires"	httpExpires="2020-12-31" />
			<clientCache cacheControlMode="UseMaxAge"	cacheControlMaxAge="7.00:00:00" />
			<clientCache cacheControlMaxAge="14.00:00:00" cacheControlMode="UseMaxAge"/>
		</staticContent>
		-->

		<validation validateIntegratedModeConfiguration="false" />
		<modules>
			<add name="LoggerHostnameHandler" type="Composite.Core.WebClient.Logging.WCF.LoggerHostnameHandler, Composite" />
			<add name="ApplicationOfflineCheck" type="Composite.Core.Application.ApplicationOfflineCheckHttpModule, Composite" />
			<add name="AjaxResponseHandler" type="Composite.Core.WebClient.Ajax.AjaxResponseHttpModule, Composite" />
			<add name="CompositeAdministrativeResponseFilter" type="Composite.Core.WebClient.HttpModules.AdministrativeResponseFilterHttpModule" />
			<add name="CompositeAdministrativeAuthorization" type="Composite.Core.WebClient.HttpModules.AdministrativeAuthorizationHttpModule, Composite" />
			<add name="CompositeRequestInterceptor" type="Composite.Core.WebClient.Renderings.RequestInterceptorHttpModule, Composite" />
			<add name="CompositeAdministrativeDataScopeSetter" type="Composite.Core.WebClient.HttpModules.AdministrativeDataScopeSetterHttpModule, Composite" />
			<add name="CompositeAdministrativeCultureSetter" type="Composite.Core.WebClient.HttpModules.AdministrativeCultureSetterHttpModule, Composite" />

			<!--
			mc++ check this???????
			<add name="HttpCacheModule" lockitem="false"></add>
			<add name="StaticCompressionModule" lockitem="false"></add>
			<add name="HttpRedirectionModule" lockitem="false"></add>
			<add name="StaticFileModule" lockitem="false"></add>
			<add name="AnonymousAuthenticationModule" lockitem="false"></add>
			<add name="CustomErrorModule" lockitem="false"></add>
			<add name="IsapiModule" lockitem="false"></add>
			<add name="ProtocolSupportModule" lockitem="false"></add>
			-->
		</modules>
		
		<caching enabled="true" >
			<profiles>
				<add extension=".gif" policy="DontCache"  duration="0.00:01:00" location="Any"></add>
				<add extension=".png" policy="DontCache" duration="0.00:01:00" location="Any"></add>
				<add extension=".js" policy="DontCache" duration="0.00:01:00" location="Any"></add>
				<add extension=".css" policy="DontCache"  duration="0.00:01:00" location="Any"></add>
				<add extension=".jpg" policy="DontCache"  duration="0.00:01:00" location="Any"></add>
				<add extension=".jpeg" policy="DontCache"  duration="0.00:01:00" location="Any"></add>
			</profiles>
		</caching>
		<!--
		C1 console does not load??
		-->
	</system.webServer>
	<dotNetOpenAuth>
		<openid>
			<relyingParty>
				<behaviors>
					<add type="DotNetOpenAuth.OpenId.Behaviors.AXFetchAsSregTransform, DotNetOpenAuth" />
				</behaviors>
			</relyingParty>
		</openid>
	</dotNetOpenAuth>
</configuration>

regards

 

mel

http://www.holisticware.net

 

Coordinator
Apr 29, 2011 at 11:35 AM

Hi Mel

We will definitely look into it. Of course we will not be shipping those settings by default, but having a package that adds it is something that we would use even on our own sites

 

// Dmitry

Apr 29, 2011 at 12:13 PM

Hi Dmitry

Understood. We have tested it, but not thoroughly, currently we are working on 2 C1 sites in parallel and haven't noticed problems.
Out team's opinion was to share, so the people can test it on their non production (staging) environments. "Test by numbers"
(more people) will provide us results sooner...

Do You want us to make a package?

We would like to help You more, but team is overloaded with tasks like building our site, another one and dozen of other smaller
projects.

More details, downloads will be soon at our home site... Until then we'll just post them here in chunks as we gather information.

regards

mel

http://www.holisticware.net