判断访问链接是否是静态资源
Posted 爱上键盘的蜗牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断访问链接是否是静态资源相关的知识,希望对你有一定的参考价值。
背景
分别使用 EndsWith 和 Regex 判断 url 请求是否是静态资源
static void Main(string[] args)
int num = 1000000;
string[] suffix = ".js", ".css", ".jpg", ".png", ".gif", ".JS", ".CSS", ".JPG", ".PNG", ".GIF", ;
Stopwatch stopwatch = Stopwatch.StartNew();
for (int i = 0; i < num; i++)
IsStaticResource_EndsWith(i + suffix[i % 10]);
stopwatch.Stop();
Console.WriteLine($"IsStaticResource_EndsWith 执行 num 次,耗时 stopwatch.ElapsedMilliseconds ms");
stopwatch.Restart();
for (int i = 0; i < num; i++)
IsStaticResource_Regex(i + suffix[i % 10]);
stopwatch.Stop();
Console.WriteLine($"IsStaticResource_Regex 执行 num 次,耗时 stopwatch.ElapsedMilliseconds ms");
/// <summary>
/// 判断是否是静态资源
/// </summary>
/// <remarks>js,css,jpg,png,gif</remarks>
/// <param name="request"></param>
/// <returns></returns>
public static bool IsStaticResource_EndsWith(string path)
if (path.EndsWith(".js", StringComparison.CurrentCultureIgnoreCase)
|| path.EndsWith(".css", StringComparison.CurrentCultureIgnoreCase)
|| path.EndsWith(".jpg", StringComparison.CurrentCultureIgnoreCase)
|| path.EndsWith(".png", StringComparison.CurrentCultureIgnoreCase)
|| path.EndsWith(".gif", StringComparison.CurrentCultureIgnoreCase))
return true;
return false;
/// <summary>
/// 匹配静态资源
/// </summary>
private static readonly Regex resourceRegex = new Regex("(.*.js|.*.css|.*.jpg|.*.jpeg|.*.png|.*.gif)$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
/// <summary>
/// 判断是否是静态资源
/// </summary>
/// <remarks>.*.js|.*.css|.*.jpg|.*.jpeg|.*.png|.*.gif</remarks>
/// <param name="request"></param>
/// <returns></returns>
public static bool IsStaticResource_Regex(string path)
return resourceRegex.IsMatch(path);
测试结果
-
10 万次 EndsWith 比 Regex 性能高
-
100 万次 Regex 比 EndsWith 性能高
-
1000 万次 Regex 比 EndsWith 性能高
以上是关于判断访问链接是否是静态资源的主要内容,如果未能解决你的问题,请参考以下文章