onsdag 9. desember 2009

Dokumentasjon for HyperWeb

Da har jeg omsider fått opp en site med dokumentasjon av både HyperWeb (Classic ASP/JScript CMS) og det underliggende asplib framework. http://docs.hyperweb.no/

tirsdag 24. mars 2009

AppCache

AppCache er en del av asplib1.2 og kildekoden ligger i ~/asplib1.2/core/cache.asp http://svn.asplib.org/asplib1.2/core/cache.asp

Merknader

AppCache er globalt og er dermed felles for alle sessions / brukere – spesielt hensyn må taes ved caching av brukertilpassede data.

AppCache ligger i global namespace. I tillegg benyttes et server object i application scope AppCacheStore som må defineres i ~/global.asa slik:

<object
id="AppCacheStore"
progid="Scripting.Dictionary"
scope="application"
runat="server">
</object>

API

AppCache definerer følgende metoder for å lese/skrive/tømme cache:

Get (key, ttl, obj, context)

Leser / skriver data til AppCacheStore.

Key angir en unik streng som identifiserer dataene.

TTL angir Time To Live i sekunder. (1 time = 3600, 1 døgn = 86400)

Obj angir objekt / variabel / funksjon som skal lagres. Håndtering av funksjonsvariabler er spesielt tilrettelagt for forenklet syntaks og bruk av AppCache.

Context angir hvilken context / scope som skal benyttes for å kalle funksjonsvariabler.

Eksempel – funksjonsvariabel

Den mest nyttige måten å benytte AppCache er ved å benytte funksjonsvariabler. Ved å benytte en anonym lambda funksjon kan man ha hele logikken for å generere, lagre og hente data i samme kall.

var content = AppCache.Get(”mycontent”, 3600, function() {
return someObject.generateHtmlFromDatabase(); });

Get kan kalles kun med parameteren key for å kun lese. Dette er nyttig dersom man ikke ønsker å benytte funksjonsvariabler men heller skrive innholdet manuelt på andre tidspunkter.

Set (key, ttl, obj, context)

Skriver data til AppCacheStore.

Identisk med Get, men returnerer ikke data.

Age (key, ttl)

Oppdaterer Expires egenskapen til angitt oppføring i AppCacheStore med en ny TTL.

Query (key)

Henter angitt oppføring fra AppCacheStore.

Objektet som returneres har følgende egenskaper:

Value – dataene som er lagret. Expires – tidspunkt elementet utløper, tilsvarende Date().valueOf(). Hits – antall treff elementet har hatt siden det ble sist skrevet.

Clear (key)

Sletter angitt oppføring fra AppCacheStore.

Clear ()

Sletter samtlige oppføringer fra AppCacheStore.

fredag 19. desember 2008

Static File Caching

Static File Caching går i korte trekk ut på å serve ferdig-genererte sider direkte uten at IIS kjører nevneverdige mengder scriptkode eller database-spørringer.

Denne typen caching vil kunne fungere på "FriendlyURL"-baserte sider. Altså sider som ikke fysisk eksisterer, men heller URL av typen: /about/employees

Første gang siden vises sjekkes legges den ferdig-genererte siden i cachet og sendes deretter som normalt til browseren. Ved neste forespørsel til URL'en vil 404 handleren sjekke om aktuell side ligger i cachet, og evt. serve den cachede utgaven.

Page objektet har egenskapene cacheMaxAge og cacheStrategy.

cacheMaxAge angir hvor lenge siden skal caches (antall sekunder)

cacheStrategy angir en av følgende verdier:

Global

Samme utgave serves alle brukere.

User

Siden caches pr. innlogget bruker. Dette er nyttig dersom siden inneholder brukerspesifikke opplysninger, som f.eks brukernavn etter innlogging.

QueryString

Siden caches for hver unike QueryString som er benyttet. Dette er nyttig dersom siden bruker parametere for å f.eks filtrere data.

User + QueryString

Angir en kombinasjon

Ved å benytte denne type caching vil man få en dramatisk økning i ytelsen for kompliserte templates som henter data fra flere sider. Det samme gjelder også dersom siten kjøres i et "Shared Hosting"-miljø med stor trafikk.

torsdag 4. desember 2008

Test av syntax highlighting

Da har jeg omsider fått syntax highlighting til å fungere i bloggen. Koden legges i en <code></code> tag og styles automatisk av en javascript-snutt.

Følgende plasseres i <head>

<link href="'http://innerhtml.org/js/code.css'" type="'text/css'" rel="'stylesheet'">
<script src="'http://innerhtml.org/js/code.js'" type="'text/javascript'"></script>

For litt raskere rendering kan man plassere følgende i <body> , rett etter siste plass kode kan forekomme:

<script type="text/javascript">SyntaxHighlighter.init();</script>

Resultatet blir som følger:

var page = new hyperweb.Page();
page.Open("/");

onsdag 3. desember 2008

Velkommen til Thomas' utviklerblogg

Dette markerer starten på min karriere som blogger :)

Denne bloggen vil i hovedsak være en utviklerblogg i forbindelse med jobben i Hyper Interaktiv AS.

Tanken er å dokumentere prosjektene jeg jobber på og poste tips og triks relatert til web-utvikling.

Det vil bli lagt spesielt mye vekt på web standarder, HTML, CSS, JavaScript og server-side programmering på Microsoft IIS med ASP/JScript og ASP.NET/C# som rammeverk/språk.

Hyper Interaktiv