---
title: "Optimeringstips (Det var ett tag sen)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/58985-optimeringstips-det-var-ett-tag-sen"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Lukaspojken"
published: "2002-11-14T07:44:48.000Z"
updated: "2002-11-18T17:01:28.000Z"
replies: 25
views: 765
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/58985-optimeringstips-det-var-ett-tag-sen"
---

# Optimeringstips (Det var ett tag sen)

_Sida 1 av 2._

## #1 — Lukaspojken, 2002-11-14T07:44Z

Ju mer man håller på att kodar i ASP  desto mer lär man sig. Jag tänkte ge några nya optimeringstips. Skulle vara intressant att höra några av era favoriter.

1) Response.redirect
Iställer för att använda response.redirect kan man använda sig av server.transfer som är en aning snabbare.

2) Arrays kombinerat med konstanter

Innan kodade jag på detta sätt:

```
strSQL = "SELECT (din sqlfråga)"
Set RecSet = Connect.Execute(strSQL)

			IF NOT RecSet.EOF THEN arrRecords = RecSet.GetRows

FOR I=0 to UBound(arrRecords,2)
		
			variabelX = arrRecords(0,I)
			variabelY = arrRecords(1,I)

			response.write variabelX & variabelY
Next
```

Idag försöker jag mer arbeta på detta sätt:

```
const variabelX = 0
const variabelY = 1

strSQL = "SELECT (din sqlfråga)"
Set RecSet = Connect.Execute(strSQL)

			IF NOT RecSet.EOF THEN arrRecords = RecSet.GetRows

FOR I=0 to UBound(arrRecords,2)
			response.write arrRecords(variabelX,I) & arrRecords(variabelY,I)
Next
```

Rekommenderat är att namnge sina konstanter med det innehåll de innehåller så att man får en bra överblick över koden.

Kom gärna med fler tips som sagt...

Permalänk: https://www.webforum.nu/p/58985

## #2 — Vide, 2002-11-14T11:09Z

Bara en liten notering på punkt ett: skillnaden mellan response.redirect och server.transfer är att all "state" följer med till nästa sida när du använder transfer, vilket inte sker med redirect... varför det också låter konstigt att det skulle gå snabbare...

Mvh, Vide

Permalänk: https://www.webforum.nu/p/854430

## #3 — Nickemannen, 2002-11-14T11:16Z

Stäng alltid databas kopplingen

Connect.Close
Set Connect = Nothing
Set RecSet = Nothing

Loopa inte in text i variabler som du senare vill skriva ut skriv ut det direk.

Använd helst bara
\<%%\>
en gång

Permalänk: https://www.webforum.nu/p/854436

## #4 — Jesper T, 2002-11-14T11:51Z

> **Vide skrev:**
>
> Bara en liten notering på punkt ett: skillnaden mellan response.redirect och server.transfer är att all "state" följer med till nästa sida när du använder transfer, vilket inte sker med redirect... varför det också låter konstigt att det skulle gå snabbare...
> 
> Mvh, Vide

Vad är all "state"?

Permalänk: https://www.webforum.nu/p/854470

## #5 — niko, 2002-11-14T11:59Z

Att jämföra response.redirect och server.transfer är som att jämföra äpplen med päron. **response.redirect** är i allt väsentligt en klientfunktion och kräver två rundturer över nätverket. Ganska givet att den är långsammare under de flesta förhållanden.

Permalänk: https://www.webforum.nu/p/854477

## #6 — OveRRidE, 2002-11-14T12:10Z

Använd ,,128 vid databasoperationer som inte returnerar ett recordset.

```
objConn.execute("UPDATE table SET kolumn = " & value & "")[red],,128[/red]
```

Använd option explicit överst på alla sidor (för felhantering) och dim:a alla variablar.

Permalänk: https://www.webforum.nu/p/854484

## #7 — Vide, 2002-11-14T13:54Z

> **Jesper T skrev:**
>
> Vad är all "state"?

Från DevGuru:
This transfered information includes all objects and variables that have been given a value in an Application or Session scope, and all items in the Request collections.

Permalänk: https://www.webforum.nu/p/854546

## #8 — OveRRidE, 2002-11-14T14:05Z

OT: Tycker det verkar lite konstigt att de skriver Application och Sessionscope i den beskrivningen, för de samlingarna följer ju med oavsett hur du länkar/skickar/postar till en ny sida. :)

Permalänk: https://www.webforum.nu/p/854553

## #9 — m_soderlund, 2002-11-14T14:26Z

Exakt vad gör 128 Override?

Mer:
\- använd sessioner så lite som möjligt - stäng helst av användningen av dem
Kod: \<%@enablesessionstate=false%\>

\- använd oledb i stället för odbc till databaser
Kod: Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("din_databas.mdb")

Permalänk: https://www.webforum.nu/p/854568

## #10 — Ekström, 2002-11-14T14:31Z

Använd mySQL istället för Access!

Permalänk: https://www.webforum.nu/p/854572

## #11 — OveRRidE, 2002-11-14T14:56Z

Konstanterna ,,128 ser till att det inte returneras ett tomt recordset vid INSERT eller UPDATE i ett execute-anrop. 

Prestandamässigt bättre med andra ord.

Alltså:

```
'vill ha ett recordset tillbaks
[red]set rs = [/red]conn.execute("select * from table")

'vill inte ha ett recordset tillbaks
conn.execute("update table set kolumn = 1 where id = 5")[red],,128[/red]
'eller
conn.execute("insert into table (kolumn) values('nåt')")[red],,128[/red]
```

Permalänk: https://www.webforum.nu/p/854598

## #12 — doggelito, 2002-11-14T15:13Z

Fråga, vad är skillnaden:

```
const variabelX = 0
const variabelY = 1

strSQL = "SELECT (din sqlfråga)"
Set RecSet = Connect.Execute(strSQL)

			IF NOT RecSet.EOF THEN arrRecords = RecSet.GetRows

FOR I=0 to UBound(arrRecords,2)
			response.write arrRecords(variabelX,I) & arrRecords(variabelY,I)
Next
```

```
strSQL = "SELECT (din sqlfråga)"
Set RecSet = Connect.Execute(strSQL)

			IF NOT RecSet.EOF THEN arrRecords = RecSet.GetRows

FOR I=0 to UBound(arrRecords,2)
			response.write arrRecords(0,I) & arrRecords(1,I)
Next
```

Permalänk: https://www.webforum.nu/p/854616

## #13 — Lukaspojken, 2002-11-14T15:18Z

Override: Men returnerar update eller insert något?

Permalänk: https://www.webforum.nu/p/854619

## #14 — Lukaspojken, 2002-11-14T15:20Z

doggelito: Skillnaden är att du inte har någon aning om vad som finns i arrayn när du skriver ut det på det sättet. konstanter ska hjälpa en att få en bättre överblick över koden.

Permalänk: https://www.webforum.nu/p/854622

## #15 — doggelito, 2002-11-14T15:25Z

> **Lukaspojken skrev:**
>
> doggelito: Skillnaden är att du inte har någon aning om vad som finns i arrayn när du skriver ut det på det sättet. konstanter ska hjälpa en att få en bättre överblick över koden.

Sant!

Mitt tips och kanske det allra bästa tipset är att om man skriver samma saker väldigt ofta och på flera ställen så för guds skull gör en function eller sub isället!
Vet du inte vad function eller sub är så gör en sökning här på wF eller på msdn. :)

Permalänk: https://www.webforum.nu/p/854628

## #16 — OveRRidE, 2002-11-14T15:27Z

> **Lukaspojken skrev:**
>
> Override: Men returnerar update eller insert något?

Nej, inte om du kör det på det sättet. Däremot kan du få dem att returnera felkod eller mess eller liknande om man använder klasser eller funktioner.

Permalänk: https://www.webforum.nu/p/854631

## #17 — OveRRidE, 2002-11-14T15:28Z

> **Lukaspojken skrev:**
>
> doggelito: Skillnaden är att du inte har någon aning om vad som finns i arrayn när du skriver ut det på det sättet. konstanter ska hjälpa en att få en bättre överblick över koden.

Konstanter har väl en fördel i prestanda också tror jag, om man jämför med variablar. En konstant kan inte ändra värde under runtime vilket gör den readonly i koden, och därmed ökar prestandan. 

Så är det väl iallafall i VB, rätta mig någon om jag har fel. :)

Permalänk: https://www.webforum.nu/p/854633

## #18 — doggelito, 2002-11-14T16:32Z

> **Lukaspojken skrev:**
>
> Override: Men returnerar update eller insert något?

Dock kan det returnera antalet träffade poster.

```
conn.execute("update table set kolumn = 1 where id = 5"),rows,128
response.write rows
```

Permalänk: https://www.webforum.nu/p/854675

## #19 — OveRRidE, 2002-11-14T18:57Z

doggelito, ja det kan det. Men om vi bortser från konstanter så returnerar ju inte ett execute-anrop nåt direkt konkret. ;)

Permalänk: https://www.webforum.nu/p/854749

## #20 — joup, 2002-11-14T21:01Z

Jag har hört att det skall vara bra att ha

```
Response.Buffer=True
```

Överst på alla sidor, eftersom det betyder att alla ASP-kod, databaskopplingar osv. görs innan sidan börjar ladda hem HTML-koden. Har använt mig av det på några sidor, och tycker att sidorna laddar snabbare då.

Permalänk: https://www.webforum.nu/p/854863

---

Tråden på webben: https://www.webforum.nu/amne/asp/58985-optimeringstips-det-var-ett-tag-sen  
Nästa sida: https://www.webforum.nu/amne/asp/58985-optimeringstips-det-var-ett-tag-sen/page2.md
