首页 > 其他分享 >判断访问链接是否是静态资源

判断访问链接是否是静态资源

时间:2023-02-09 09:55:48浏览次数:40  
标签:Regex IsStaticResource 静态 是否是 jpg EndsWith stopwatch path 链接

背景

分别使用 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 性能高

标签:Regex,IsStaticResource,静态,是否是,jpg,EndsWith,stopwatch,path,链接
From: https://www.cnblogs.com/frank-zhang/p/17104180.html

相关文章

  • 13-LSTM多步预测-静态模型预测
    importpandasaspdfromsklearn.metricsimportmean_squared_errorimportmathimportmatplotlib.pyplotaspltimportdatetimedefparser(x):returndatet......
  • 静态网站与动态网站的区别 & 静态网站生成工具
    1、静态网站与动态网站静态网站是什么?技术上来讲,静态网站是指网页不是由服务器动态生成的。HTML、CSS和JavaScript文件就静静地躺在服务器的某个路径下,它们的内容与终端......
  • 静态库和动态库的区别
    程序编译成可执行程序的过程动态库会在链接过程中将自己名字信息打包到可执行文件中,但是不会把自己代码打包过去静态库则是会将自己的代码直接打包到可执行文件中静态库......
  • 动态链接库的动态加载
    #include<stdio.h>#include<dlfcn.h>intmain(void){//使用动态加载的编译时必须链接dl库(-ldl),因为动态加载的各种方法都在dl库中//gccmain.c-otes......
  • 静态库的制作和使用
    库文件计算机上的一类文件,可以看作代码库两种,静态库和动态库静态库在程序的链接阶段被复制到程序中;动态库在链接阶段没有被复制,而是在运行时由系统动态的加载到内存供......
  • 如何在 C# 项目中链接一个文件夹下的所有文件
    在C#项目中通过链接方式引入文件可以让我们在项目中使用这些文件中的代码。常见的比如链接AssemblyInfo.cs文件,这样我们就可以在项目中使用这个文件中的版本号等信息......
  • 如何检查文件是否有Python的符号链接
    1、对于python3.4及更高版本,可以使用Path类。frompathlibimportPath#rpdisasymboliclink>>>Path('rdp').is_symlink()True>>>Path('README').is_symlink()False2......
  • python静态web服务器如何实现
    1、编写TCP服务器程序。2、获取浏览器发送的http请求消息数据。3、读取固定的页面数据,将页面数据组装成HTTP响应消息数据并发送给浏览器。4、HTTP响应报文数据发送完成后,关......
  • 外卖CPS小程序部署指南,个人获取美团外卖小程序跳转链接
    大家好,我是小悟上次利用闲暇时间弄了个外卖CPS小程序,并把代码开源出来,还是有挺多小伙伴来领取源码的。不仅有同行的人,还有跨行的人,也摸索着搞出来小程序推一推。有几个小伙......
  • Python模块之 urlparse 拆分 url 网址链接
    作用:拆解url网址链接,协议、网络位置、路径等必要操作:py2:>>>pipinstallurllib-ihttp://pypi.douban.com/simple/--trusted-hostpypi.douban.com>>>fro......