2012-11-10 6 views
5

W mojej aplikacji nodeJS chciałbym wygenerować pakiety ETag dla wszystkich treści, które zwracam do klienta. Potrzebuję ETag na podstawie rzeczywistej zawartości pliku zamiast daty, tak aby ten sam plik w różnych procesach węzła miał ten sam ETag.Jakie kodowanie należy użyć do prawidłowego wygenerowania ETag z kryptografią w nodeJS?

Teraz robie co następuje:

var fs = require('fs'), crypto = require('crypto'); 
fs.readFile(pathToFile, function(err, buf){ 
    var eTag = crypto.createHash('md5').update(buf).digest('hex'); 
    res.writeHead(200, {'ETag': '"' + eTag + '"','Content-Type':contentType}); 
    res.end(buf); 
}); 

Nie jestem pewien, co powinno być kodowanie z użyciem różnych funkcji kryptograficznych w celu uzyskania odpowiedniego systemu w miejscu. Czy powinienem używać czegoś innego niż hex? Czy powinienem uzyskać wywołanie fs.readFile, aby zwrócić bufor zakodowany w formacie szesnastkowym? Jeśli tak, czy będzie to miało wpływ na treść zwracaną użytkownikom?

Best, a Dzięki
Sami

+1

Może to pomóc: http://stackoverflow.com/q/4533 –

Odpowiedz

7

Robisz to w porządku. Nie ma powodu, aby kodować plik w dowolnym specjalnym formacie, a używanie formatu hex dla danych wyjściowych jest dość standardowe. Wymagania, luźno mówiąc, to:

  • ten sam dokument powinien zawsze zwraca ten sam ETag
  • wszelkie zmiany w dokumencie powoduje zmianę w ETAG
  • dane wytycznych powinny pasować idealnie do nagłówka HTTP
+0

Nie mam pojęcia, jak szybko implementacja skrótu node.js jest - musisz to zmierzyć dla siebie. Jeśli czas generowania skrótu jest zbyt długi, możesz pomyśleć o buforowaniu nazwy pliku, czasu modyfikacji i skrótu, więc nie zawsze będziesz musiał obliczać te rzeczy. – slashingweapon

Powiązane problemy