97df2bb095
x-ref: https://github.com/vercel/next.js/issues/38235#issuecomment-1182283358 Rewrite ETag generate function with `fnv1a` hash. FNV hashes are designed to be fast while maintaining a low collision rate. The FNV speed allows one to quickly hash lots of data while maintaining a reasonable collision rate (https://softwareengineering.stackexchange.com/questions/49550/which-hashing-algorithm-is-best-for-uniqueness-and-speed/145633). [fastify-etag](https://github.com/fastify/fastify-etag) also uses `fnv1a` algorithm by default. cc @shuding: Should `experimental-edge` also switch to `fnv1a` for ETag, for consistency?
5 lines
219 B
TypeScript
5 lines
219 B
TypeScript
// Buffer.byteLength polyfill in the Edge runtime, with only utf8 strings
|
|
// supported at the moment.
|
|
export function byteLength(payload: string): number {
|
|
return new TextEncoder().encode(payload).buffer.byteLength
|
|
}
|