﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
30772	"Template Cache ""make_template_fragment_key"" function speed up & switch to SHA256"	Daniel	nobody	"The `make_template_fragment_key` function in `django.core.cache.utils` has the following (minor) issues:

- Using `urllib.quote` for `vary_on` args, is not needed any more - it was originally added to make the unhashed strings safe to send to memcached and similar restricted systems.  But since the value is hashed, this is now adding nothing. (See https://github.com/django/django/commit/ebc1325721e43808cef4334edaffc23a43f86614#diff-702b69be0100a594fd6fea1e4ab2feb1).

- Use of the MD5 hashing function is disallowed on certain (odd) systems, not being FIPS compliant. See (https://github.com/django/django/pull/10605).

- Creates a string of all joined `vary_on` args to send to the hashing function, rather than using the hashlib `.update()` method.

Here is a version solving these, switching to SHA256, and speeding up the function quite a bit:

https://github.com/danthedeckie/django/tree/simplified_make_template_fragment_key

And here's the repo showing performance improvement:

https://github.com/danthedeckie/make_template_fragment_key_test

Which seems to be faster in every case.

The downside of this is that the cache key is now different from before.  The tests have been updated to the new values.

Thoughts?"	Cleanup/optimization	new	Core (Cache system)	2.2	Normal				Unreviewed	1	0	0	0	0	0
