Kunskapsresurser

Vi vill dela med mig av våra erfarenheter i hopp om att andra utvecklare brukar behöva slösa timmar på samma slag som vi redan har kämpat och vunnit.

Varnish caching i minnet

Vi har experimenterat med lack för den senaste veckan eller så och har varit mycket nöjda med resultatet. Inledningsvis har vi tilldelats 1 GB för cache lagring, men har funnit att för att vara otillräckliga. Vår / var / lib / lack / varnish_storage.bin filen hade träffat gränsen och klarlack började ta bort objekt från cache baserat på dess "minst nyligen använd" LRU-algoritmen. Det var bara just då insåg vi att det fanns nog ett bättre sätt. Efter googla lite upptäckte vi malloc alternativet för Varnish.

Sluta Varnish cache tidsinställd ut sidor

Vi har arbetat med en klient som driver en mycket överbelastad ColdFusion webbserver och har upprätta Lack cacheAmazon AWS att lindra en del av lasten och kraftigt öka sidan respons och laddningstider.

MySQL byggnad gränssnitt till memcache

Mario beck skriver:

Varför inte använda memcached direkt?

Varför plugin till MySQL? Memcache är ett minne caching men inte en ihållande datalagring. Den memcached plugin för MySQL lagrar data i en InnoDB tabell. Så du får uthållighet, nästan obegränsade bordets storlek och ändå kan du komma åt dina data via SQL om du vill ha mer komplicerade saker som COUNT (*) WHERE pkey LIKE = "sida:%"; Detta skulle inte vara möjligt i memcached. Men med memcached plugin du kan lagra data med memcached SET och rapportera om dina data med SQL-frågor.

Denna funktion är tillgänglig i MySQL Labs release.

Mongo spets: Inaktivera bord genomsökningar för utveckling

Precis som i alla relationsdatabas, bord skannar i Mongo är mycket långsamma. I mongod.conf konfigurationsfilen kan du inaktivera bord genomsökningar med:

notablescan = true

Nu när du försöker göra en fråga som skulle kräva ett bord scan, kommer ett undantag kastas av Mongo och skickas tillbaka via din drivrutin. Det är bäst att slå på tidigt under utvecklingsprocessen, eftersom det kan också hjälpa belysa dåligt skriven frågor.

Observera till exempel att en fråga som:

Mongo spets: Undvik DBRef till varje pris

Vi använder morfin för att göra livet lätt när ihållande Java-objekt till ett MongoDB datalagring. Detta bibliotek gör det mesta av arbetet ranger objekt och förbereder frågor. Tyvärr när du hänvisar till (i stället för inbäddning) objekt med hjälp av @ Reference anteckning, morfin med Mongo s DBRef mekanism för att lagra ID. Den DBRef är en förening nyckeln till en Mongo Insamling och ID för objekt inuti att insamlingen.

Uppfriskande hash del av URL att utlösa rullning

För admin sidorna i " Unified Database "vi har byggt, skrev jag nyligen en enkel generator hopp länk med javascript / jQuery. Det ser i princip upp alla <h2> rubriker på sidan, skär en ankarlänk inne och lägger en motsvarande hopp länk till en navigering ruta i sidomenyn.

jQuery ajax återuppringning inte kallas?

Vid byte av samtal till några äldre ajax hjälpfunktioner, kom jag nyligen över ett problem det tog ett tag för mig att lösa. Enligt Firebug (en mycket användbar Firefox plugin, om du inte vet om det)Var Ajax uppmaningen och svaret såg alldeles utmärkt, men min callback-funktion aldrig åberopas. Till slut, för att testa, jag hade en enkel sträng som denna:

$.get('/some/url', function(){ alert('called'); });

Passing anpassade argument till jQuery ajax återuppringning fungerar

Vid avvecklingen vårt gamla samling av ajax hjälpfunktioner, sprang jag in i ett problem med passerande anpassade argument för att callback funktion ajax ansökan. Våra gamla ajax funktioner som baserades på eval () 'ning och skulle kunna godta egna argument som en bokstavlig sträng som användes tillsammans med funktionen namnet att bygga kallelse om återuppringning. När du använder jQuery är situationen annorlunda, eftersom jQuery ger callback-funktion med en fast uppsättning argument:

$.get('/some/url', function(data, textStatus, XMLHttpRequest) {
	//do something
});

Cfquery träff structs

I gamla Coldfusion 6, kan du komma åt antalet rader tillbaka för en urvalsfråga genom att gå queryName.recordcount.

I CF8 har cfquery nu resultat attribut som används för att namnge en struct som innehåller ytterligare information om exekveras frågan. Så nu frågan:

<cfquery name="a" result="aRes" datasource="uid">
...
</cfquery>

Du kan göra både a.recordcount och aRes.recordcount, men bara de verk sistnämnda för update eller ta bort frågor!

Förbättra användarupplevelsen i Google översatt mode

Vi har nyligen lagt en enkel meny Översätt, så en kunds webbplats , som erbjöd webbplatsen ska Google översättas till ett par olika språk. Eftersom det inte finns något enkelt sätt att bli av den översatta lägets ramen layout och gå tillbaka till den ursprungliga språket utan Googles översta fältet, ville kunden oss att öppna översättningen i ett nytt fönster. Detta uppnås lätt genom tillsats av target="_blank" till blanketten är ansvarig för lanseringen av översättningen.

Sidor

Prenumerera på Knowledge resources