`
csstome
  • 浏览: 1509344 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

试用EF开发WEB应用程序(4): 缓存Query String

阅读更多

题记:用“易语言.飞扬”(EF)开发WEB应用程序,此前还没有先例。但因为EF本地开发包(EFNDK)已经发布,用C/C++开发一个EF类库,使其支持EF开发WEB应用程序,应该并非难事。当然也可想而知,其中必有诸多难点有待解决。此系列文章,为本人探索过程之记录,对外人未必有多大价值。如有网友乐观其事,还请理性待之。作者:liigo。转载请务必注明出处:http://blog.csdn.net/liigo/在线留言


试用EF开发WEB应用程序(4): 缓存Query String

上一篇文章已经讲过了如何读取Query String。今天继续讲 Query String 相关的优化措施。

在 CGI / FastCGI 程序中,Query String是最重要使用最频繁的参数,其对进行的主要操作有:1、从环境变量中读取Query String;2、对Query String进行URL解码;3、从Query String中解析出指定名称的参数值。这三项操作都相对比较耗时,而且最常见的第3项操作还分别依赖于前面2项的操作。

在“易语言.飞扬”类库 fastcgi.efn 中,我对 Query String 进行了专门的优化,有效提高了程序执行效率。优化的主要措施是缓存:在每个请求(Request)期间,最多只从环境变量中读取一次,最多只进行URL解码一次,最多只解析解码后的Query String一次——同时将解析结果放入哈希表中,进一步提高检索效率。(有一个实现细节也许有必要指出,我这里使用的哈希表,在比较文本时是区分字母大小写的,这要求用户使用时也要注意区分参数文本的大小写,否则将得不到正确结果。我想这不是很苛刻的要求,因为无论是C/C++还是EF,都在语言层面上区分字母大小写,程序员应该不会在这方面犯低级错误,况且区分大小写比较文本在执行效率上也高于不区分大小写的情况。当然,这个行为,今后可能进行必要的调整。TODO:参考RFC1738。)

如果您之前还对“FCGI fcgi = new FCGI();”这句代码感到奇怪,疑惑为什么不将FCGI类中的所有方法定义为静态方法的话,现在应该可以找到部分答案了。对了,优化的需要。在进入 fcgi.Accept() 循环之前,创建一个EF对象根本不影响FastCGI程序的执行效率,却又能从很大程度上优化执行效率,何乐而不为呢?

下篇预告:URL编码和URL解码

分享到:
评论

相关推荐

    ASP.NET面试题汇总(常考笔试+机试题)

    ASP.NET是微软公司推出的一种基于.NET Framework的Web应用程序开发平台,它为开发者提供了构建动态、数据驱动的Web应用的强大工具和框架。这份“ASP.NET面试题汇总”包含了常考的笔试和机试题,旨在帮助求职者更好地...

    ASP.NET高级编程.rar

    ASP.NET是微软公司推出的用于构建Web应用程序的框架,它基于.NET Framework,提供了丰富的功能和工具,使得开发者可以更高效地创建动态、交互式的网站。"ASP.NET高级编程.rar"这个压缩包很可能包含了深入讲解ASP.NET...

    ASP.NET3.5入门经典

    ASP.NET 3.5是微软开发的一个用于构建Web应用程序的框架,它基于.NET Framework 3.5版本。这本书“ASP.NET 3.5入门经典”是针对初学者和有一定经验的开发人员设计的,旨在帮助他们掌握这个强大的平台。下面我们将...

    ASP.NET数据库入门经典--C#编程篇

    ASP.NET是微软公司推出的用于构建Web应用程序的框架,它基于.NET Framework,提供了强大的服务器端编程模型,使得开发者能够使用C#等语言轻松地创建动态网页和Web应用。本篇文章将聚焦于ASP.NET数据库编程,尤其是...

    在ASP.NET中查询数据库中的数据.rar

    在ASP.NET中,查询数据库是开发Web应用程序时的常见任务,这涉及到与各种数据库系统(如SQL Server、MySQL、SQLite等)的交互。本教程将深入探讨如何在ASP.NET环境中检索和操作数据库中的数据。 首先,我们需要理解...

    Android技术面试整理附有详细答案(包括百度、新浪、中科软等多家公司笔试面试题)

    Content Provider通过实现一系列标准的方法(如`query()`、`insert()`、`update()`、`delete()`等)来对外提供数据访问接口,这样其他应用程序就可以通过这些方法来获取或修改数据。 - **Broadcast Receiver**: ...

    ADO.NET Entity Framework 教程

    - **性能分析**:对于性能敏感的应用程序,开发者应考虑 LINQ 查询的效率、避免不必要的查询以及合理利用缓存机制。 - **版本兼容性和升级策略**:随着 Entity Framework 的不断发展,开发者需要关注版本间的兼容性...

    C#-SqlSugar的实践案例

    C#是一种广泛应用于Windows平台和Web开发的编程语言,而SqlSugar是针对.NET平台的一款高效、易用的ORM(对象关系映射)框架,它旨在简化数据库操作,使得开发者能够更加专注于业务逻辑而不是繁琐的数据访问代码。...

    MySQL优化笔记

    3. **查询优化**:开启查询缓存(`query_cache_type`)并合理设置缓存大小(`query_cache_size`),可以显著提高简单查询的速度。 4. **日志记录**:合理设置`innodb_log_file_size`等参数,以平衡日志记录的需求和...

    Pagination:ASP核心的简单导航

    这可以在数据库层面优化性能,避免传输大量不必要的数据到应用程序。在C#中,你可以通过构建这样的SQL查询来实现: ```csharp string sql = "SELECT * FROM YourTable ORDER BY Id OFFSET @skip ROWS FETCH NEXT ...

Global site tag (gtag.js) - Google Analytics