Performance enhancements for esc_url()
|Reported by:||markjaquith||Owned by:|
|Cc:||ADAMSILVERSTEIN@…, mboynes, nashwan.doaqan@…, sunnyratilal5@…|
esc_url() gets used a lot on WordPress admin pages. Sometimes 100 times or more. Nacin did some KcacheGrind measurements that had it as 7% of some pages. We can speed it up.
Most of the grind comes from wp_kses_bad_protocol().
I had a thought that we're sort of going about things backwards. We're being very careful to exclude anything harmful — bad characters, bad protocols, duplicate fake-out protocols, etc. But almost 100% of the time, the URL going through it is a http/https URL that has completely normal characters in it. We can detect that really early, and bail.
I did some tests with this approach that showed a good time savings.
Quite obviously, there's no room to compromise on security, so we'll need to be watching unit test, and maybe even writing some new ones for good measure.