首页 文章 精选 留言 我的

精选列表

搜索[高性能全文搜索引擎],共10000篇文章
优秀的个人博客,低调大师

BeeCP-3.2.0, 3.2.1 发布,高性能 JDBC 连接池

小蜜蜂连接池:一款创新式JDBC连接池。 1:亮点 CAS锁与队列 连接对象单缓存 CAS自旋式等待/Transfer算法(池化领域独一无二的创新) 2:性能对比(光连接池测试基准) CPU:I5-4460,OS:Win7_64 内存:8G 跑分源码:https://github.com/brettwooldridge/HikariCP-benchmark (时间在前进,思维在变更,技术在迭代,跑分公布并非贬低同类作品,只是让读者更直观感受到各作品进步的差异性) 3:版本下载(Java7或更高版本) <dependency> <groupId>com.github.chris2018998</groupId> <artifactId>beecp</artifactId> <version>3.2.1</version> </dependency> 4:更新内容 优化父级对象关闭子类代理对象(3.2.0) 调整AutoCommit脏标记位置(3.2.1) 5:Springboot启动器同步更新 <dependency> <groupId>com.github.chris2018998</groupId> <artifactId>beecp-spring-boot-starter</artifactId> <version>1.5.7</version> </dependency> 6:项目地址 国内地址:https://gitee.com/mirrors/BeeCP 国外地址:https://github.com/Chris2018998/BeeCP

优秀的个人博客,低调大师

BeeCP-3.1.8 发布,高性能 JDBC 池(Java 当前最快)

小蜜蜂连接池:一款创新式JDBC连接池,具有性能高,代码轻,稳定性好的特点。 1:亮点 CAS锁与队列 连接对象单缓存 独创CAS自旋式算法(池化领域独一无二的创新) 2:性能对比 CPU:I5-4430,OS:Win7_64 内存:8G 3:版本下载(java7) <dependency> <groupId>com.github.chris2018998</groupId> <artifactId>beecp</artifactId> <version>3.1.8</version> </dependency> 4:更新内容 重构闲置连接的定时扫描线程 优化连接池退出CAS 连接初始化时增加针对setNetworkTimeout方法的检测 5:Springboot启动器同步更新 <dependency> <groupId>com.github.chris2018998</groupId> <artifactId>beecp-spring-boot-starter</artifactId> <version>1.5.4</version> </dependency> 6:项目地址 国内地址:https://gitee.com/mirrors/BeeCP 国外地址:https://github.com/Chris2018998/BeeCP 补充说明 对于此作品(BeeCP,BeeOP) 个人付出了巨大心血, 因此视此作品为个人编程生涯的两枚勋章。 可以看,可以学,也可以用(仅Jar包),唯独不可以拿走此作品的核心代码与核心思想并应用在他处, 天下独此一份,违者将追究法律责任。 更多信息请查看附加条款说明:https://my.oschina.net/u/3918073/blog/5005030

优秀的个人博客,低调大师

高性能 Nginx HTTPS 调优 - 如何为 HTTPS 提速 30%

作者 |卡拉先生 来源 |https://kalasearch.cn/blog/high-performance-nginx-tls-tuning/ 为什么要优化 Ngin HTTPS 延迟 Nginx 常作为最常见的服务器,常被用作负载均衡 (Load Balancer)、反向代理 (Reverse Proxy),以及网关 (Gateway) 等等。一个配置得当的 Nginx 服务器单机应该可以期望承受住 50K 到 80K 左右每秒的请求,同时将 CPU 负载在可控范围内。 但在很多时候,负载并不是需要首要优化的重点。比如对于卡拉搜索来说,我们希望用户在每次击键的时候,可以体验即时搜索的感觉,也就是说,每个搜索请求必须在 100ms - 200ms 的时间内端对端地返回给用户,才能让用户搜索时没有“卡顿”和“加载”。因此,对于我们来说,优化请求延迟才是最重要的优化方向。 这篇文章中,我们先介绍 Nginx 中的 TLS 设置有哪些与请求延迟可能相关,如何调整才能最大化加速。然后我们用优化Nginx 服务器的实例来分享如何调整 Nginx TLS/SSL 设置,为首次搜索的用户提速 30% 左右。我们会详细讨论每一步我们做了一些什么优化,优化的动机和效果。希望可以对其它遇到类似问题的同学提供帮助。 TLS 握手和延迟 很多时候开发者会认为:如果不是绝对在意性能,那么了解底层和更细节的优化没有必要。这句话在很多时候是恰当的,因为很多时候复杂的底层逻辑必须包起来,才能让更高层的应用开发复杂度可控。比如说,如果你就只需要开发一个 APP 或者网站,可能并没有必要关注汇编细节,关注编译器如何优化你的代码——毕竟在苹果或者安卓上很多优化在底层就做好了。 那么,了解底层的 TLS 和应用层的 Nginx 延迟优化有什么关系呢? 答案是多数情况下,优化网络延迟其实是在尝试减少用户和服务器之间的数据传输次数,也就是所谓的 roundtrip。由于物理限制,北京到云南的光速传播差不多就是要跑 20 来毫秒,如果你不小心让数据必须多次往返于北京和云南之间,那么必然延迟就上去了。 因此如果你需要优化请求延迟,那么了解一点底层网络的上下文则会大有裨益,很多时候甚至是你是否可以轻松理解一个优化的关键。本文中我们不深入讨论太多 TCP 或者 TLS 机制的细节,如果有兴趣的话请参考 High Performance Browser Networking 一书,可以免费阅读。 举个例子,下图中展示了如果你的服务启用了 HTTPS,在开始传输任何数据之前的数据传输情况。 在传输数据前数据已经跑了好几个来回 roundtrip 可以看到,在你的用户拿到他需要的数据前,底层的数据包就已经在用户和你的服务器之间跑了 3 个来回。 假设每次来回需要 28 毫秒的话,用户已经等了 224 毫秒之后才开始接收数据。 同时这个 28 毫秒其实是非常乐观的假设,在国内电信、联通和移动以及各种复杂的网络状况下,用户与服务器之间的延迟更不可控。另一方面,通常一个网页需要数十个请求,这些请求不一定可以全部并行,因此几十乘以 224 毫秒,页面打开可能就是数秒之后了。 所以,原则上如果可能的话,我们需要尽量减少用户和服务器之间的往返程 (roundtrip),在下文的设置中,对于每个设置我们会讨论为什么这个设置有可能帮助减少往返程。 Nginx 中的 TLS 设置 那么在 Nginx 设置中,怎样调整参数会减少延迟呢? 开启 HTTP/2 HTTP/2 标准是从 Google 的 SPDY 上进行的改进,比起 HTTP 1.1 提升了不少性能,尤其是需要并行多个请求的时候可以显著减少延迟。在现在的网络上,一个网页平均需要请求几十次,而在 HTTP 1.1 时代浏览器能做的就是多开几个连接(通常是 6 个)进行并行请求,而 HTTP 2 中可以在一个连接中进行并行请求。HTTP 2 原生支持多个并行请求,因此大大减少了顺序执行的请求的往返程,可以首要考虑开启。 如果你想自己看一下 HTTP 1.1 和 HTTP 2.0 的速度差异,可以试一下:https://www.httpvshttps.com/。我的网络测试下来 HTTP/2 比 HTTP 1.1 快了 66%。 HTTP 1.1 与 HTTP 2.0 速度对比 在 Nginx 中开启 HTTP 2.0 非常简单,只需要增加一个 http2 标志即可 listen443ssl;#改为listen443sslhttp2; 如果你担心你的用户用的是旧的客户端,比如 Python 的 requests,暂时还不支持 HTTP 2 的话,那么其实不用担心。如果用户的客户端不支持 HTTP 2,那么连接会自动降级为 HTTP 1.1,保持了后向兼容。因此,所有使用旧 Client 的用户,仍然不受影响,而新的客户端则可以享受 HTTP/2 的新特性。 如何确认你的网站或者 API 开启了 HTTP 2 在 Chrome 中打开开发者工具,点开 Protocol 之后在所有的请求中都可以看到请求用的协议了。如果 protocol 这列的值是 h2 的话,那么用的就是 HTTP 2 了 用 Chrome 确认 HTTP/2 已经打开 当然另一个办法是直接用 curl 如果返回的 status 前有 HTTP/2 的话自然也就是 HTTP/2 开启了。 ➜~curl--http2-Ihttps://kalasearch.cnHTTP/2403server:Tenginecontent-type:application/xmlcontent-length:264date:Tue,22Dec202018:38:46GMTx-oss-request-id:5FE23D363ADDB93430197043x-oss-cdn-auth:successx-oss-server-time:0x-alicdn-da-ups-status:endOs,0,403via:cache13.l2et2[148,0],cache10.l2ot7[291,0],cache4.us13[360,0]timing-allow-origin:*eagleid:2ff6169816086623266688093e 调整 Cipher 优先级 尽量挑选更新更快的 Cipher,有助于减少延迟: #手动启用cipher列表ssl_prefer_server_cipherson;#preferalistofcipherstopreventoldandslowciphersssl_ciphers'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; 启用 OCSP Stapling 在国内这可能是对使用 Let's Encrypt 证书的服务或网站影响最大的延迟优化了。如果不启用 OCSP Stapling 的话,在用户连接你的服务器的时候,有时候需要去验证证书。而因为一些不可知的原因(这个就不说穿了)Let's Encrypt 的验证服务器并不是非常通畅,因此可以造成有时候数秒甚至十几秒延迟的问题,这个问题在 iOS 设备上特别严重 解决这个问题的方法有两个: 不使用 Let's Encrypt,可以尝试替换为阿里云提供的免费 DV 证书 开启 OCSP Stapling 开启了 OCSP Stapling 的话,跑到证书验证这一步可以省略掉。省掉一个 roundtrip,特别是网络状况不可控的 roundtrip,可能可以将你的延迟大大减少。 在 Nginx 中启用 OCSP Stapling 也非常简单,只需要设置: ssl_staplingon;ssl_stapling_verifyon;ssl_trusted_certificate/path/to/full_chain.pem; 如何检测 OCSP Stapling 是否已经开启? 可以通过以下命令 openssl s_client -connect test.kalasearch.cn:443 -servername kalasearch.cn -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response" 来测试。如果结果为 OCSPresponse:OCSPResponseData:OCSPResponseStatus:successful(0x0)ResponseType:BasicOCSPResponse 则表明已经开启。参考 HTTPS 在 iPhone 上慢的问题 一文 调整 ssl_buffer_size sslbuffersize 控制在发送数据时的 buffer 大小,默认设置是 16k。这个值越小,则延迟越小,而添加的报头之类会使 overhead 会变大,反之则延迟越大,overhead 越小。 因此如果你的服务是 REST API 或者网站的话,将这个值调小可以减小延迟和 TTFB,但如果你的服务器是用来传输大文件的,那么可以维持 16k。关于这个值的讨论和更通用的 TLS Record Size 的讨论,可以参考:Best value for nginx's sslbuffersize option 如果是网站或者 REST API,建议值为 4k,但是这个值的最佳取值显然会因为数据的不同而不一样,因此请尝试 2 - 16k 间不同的值。在 Nginx 中调整这个值也非常容易 ssl_buffer_size4k; 启用 SSL Session 缓存 启用 SSL Session 缓存可以大大减少 TLS 的反复验证,减少 TLS 握手的 roundtrip。虽然 session 缓存会占用一定内存,但是用 1M 的内存就可以缓存 4000 个连接,可以说是非常非常划算的。同时,对于绝大多数网站和服务,要达到 4000 个同时连接本身就需要非常非常大的用户基数,因此可以放心开启。 这里 ssl_session_cache 设置为使用 50M 内存,以及 4 小时的连接超时关闭时间 ssl_session_timeout #EnableSSLcachetospeedupforreturnvisitorsssl_session_cacheshared:SSL:50m;#speedupfirsttime.1m~=4000connectionsssl_session_timeout4h; 卡拉搜索如何减少 30% 的请求延迟 卡拉搜索是国内的 Algolia,致力于帮助开发者快速搭建即时搜索功能(instant search),做国内最快最易用的搜索即服务。 开发者接入后,所有搜索请求通过卡拉 API 即可直接返回给终端用户。为了让用户有即时搜索的体验,我们需要在用户每次击键后极短的时间内(通常是 100ms 到 200ms)将结果返回给用户。因此每次搜索需要可以达到 50 毫秒以内的引擎处理时间和 200 毫秒以内的端对端时间。 我们用豆瓣电影的数据做了一个电影搜索的 Demo,如果感兴趣的话欢迎体验一下即时搜索,尝试一下搜索“无间道”或者“大话西游”体验一下速度和相关度:https://movies-demo.kalasearch.cn/ 对于每个请求只有 100 到 200 毫秒的延迟预算,我们必须把每一步的延迟都考虑在内。 简化一下,每个搜索请求需要经历的延迟有 卡拉搜索的端对端延迟图示 总延迟 = 用户请求到达服务器(T1) + 反代处理(Nginx T2) + 数据中心延迟(T3) + 服务器处理 (卡拉引擎 T4) + 用户请求返回(T3+T1) 在上述延迟中,T1 只与用户与服务器的物理距离相关,而 T3 非常小(参考Jeff Dean Number)可以忽略不计。 所以我们能控制的大致只有 T2 和 T4,即 Nginx 服务器的处理时间和卡拉的引擎处理时间。 Nginx 在这里作为反向代理,处理一些安全、流量控制和 TLS 的逻辑,而卡拉的引擎则是一个在 Lucene 基础上的倒排引擎。 我们首先考虑的第一个可能性是:延迟是不是来自卡拉引擎呢? 在下图展示的 Grafana 仪表盘中,我们看到除了几个时不时的慢查询,搜索的 95% 服务器处理延迟小于 20 毫秒。对比同样的数据集上 benchmark 的 Elastic Search 引擎的 P95 搜索延迟则在 200 毫秒左右,所以排除了引擎速度慢的可能。 Search Grafana 而在阿里云监控中,我们设置了从全国各地向卡拉服务器发送搜索请求。我们终于发现 SSL 处理时间时常会超过 300 毫秒,也就是说在 T2 这一步,光处理 TLS 握手之类的事情,Nginx 已经用掉了我们所有的请求时间预算。 同时检查之后我们发现,在苹果设备上搜索速度格外慢,特别是第一次访问的设备。因此我们大致判断应该是因为我们使用的 Let's Encrypt 证书的问题。 我们按照上文中的步骤对 Nginx 设置进行了调整,并将步骤总结出来写了这篇文章。在调整了 Nginx TLS 的设置后,SSL 时间从平均的 140ms 降低到了 110ms 左右(全国所有省份联通和移动测试点),同时苹果设备上首次访问慢的问题也消失了。 调整后延迟 在调整过后,全国范围内测试的搜索延迟降低到了 150 毫秒左右。 总结 调整 Nginx 中的 TLS 设置对于使用 HTTPS 的服务和网站延迟有非常大的影响。本文中总结了 Nginx 中与 TLS 相关的设置,详细讨论各个设置可能对延迟的影响,并给出了调整建议。之后我们会继续讨论 HTTP/2 对比 HTTP 1.x 有哪些具体改进,以及在 REST API 使用 HTTP/2 有哪些优缺点,请继续关注 本文分享自微信公众号 - 肥朝(feichao_java)。如有侵权,请联系 support@oschina.cn 删除。本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

优秀的个人博客,低调大师

基于DDD思想来架构一个高性能项目

架构一个项目需要考虑的问题非常的多,诸如性能保证、规范的同时方便开发、服务器的成本考虑、部署方式等等,具体要如何选择框架去完成项目的架构,即使是经过了深思熟虑,也总会有未能考虑到的地方。我在自己思考再三且完成了Demo项目架构的情况下,准备将这个架构的思路尽可能地表达出来,望大牛指教,同行互相讨论学习。 首先,在架构总体思路上,我选择了DDD即领域驱动设计的思想,至于DDD的具体介绍则不在本文范围之内。 1、减少层级 在决定使用DDD思想后,我下一步是要减少层级。 在其他一些项目中,通常会在service层上加上一层business层(或者domain层),这一层甚至可以独立成一个模块(再往外延申就接近中台的概念了,我虽然没有中台的实战经验,但是在思想上我认为是这样实现的),让架构更加灵活。但是我始终认为,这样的做法有点把service层当成基础工具类的感觉,非常难以思考如何让service层发挥更多的作用。所以,在项目中,我的service即是business,于是往常的三层架构中的service在这里被重新定义,它承担了比三层架构更多的责任,且加入更多的规范,使得service更加丰富的同时,成为了领域设计的核心所在。至于具体如何规范service层,我将在后面陈述,因为我想先把持久化层说完。 2、持久化层单表操作 在持久化层,不同的项目叫法也不一样,dao层、mapper层、repository层等等,名称或许与其项目所使用的技术有关。项目中我选择了MyBatis框架以及MyBatis Plus增强框架,并且不建议书写任何的SQL代码。这里涉及两点原因:一、性能考虑,在MyBatis Plus的封装中,所有的操作都是单表操作,不连表则不会在数据库中通过笛卡尔积生成一个巨大的虚拟表(只要有任意一个表的数据量较大,连表生成的虚拟表都非常的大),数据库的性能上能够有一定的保障。将一些连表的操作通过Java代码来实现,对于性能的保障是非常值得的。二、在领域中,每个实体都代表一个领域,实体表示最基本的领域划定,如果书写SQL来做一些连表操作,那么将破坏领域的设计。领域之间的更多复杂关系等,应该在上层(即上述的service层)通过Java代码来体现。就像给地图画上道路、标记等,并非只有房子等建筑属于地图的一部分,错综复杂的连接关系也属于地图,这样的关系在Java中体现才更加明确,且符合DDD的领域思想。另外,选择MyBatis Plus框架的原因是:本来计划只允许单表操作且更着重于上层的代码实现,那么MyBatis Plus框架的封装显得既方便又保持了领域实体的完整性,杜绝任何的SQL代码的存在。 持久化层只有一层,直接由MyBatis Plus封装,于是所有的轮子都有了,接下来就是service层的表演了。 3、service层的方法符合开闭原则 在service层,书写的方法不首先考虑通用性而是考虑专用性,比如,一个保存的方法,不允许直接使用实体来传参,然后调用持久化层的方法来新增或更新——这样的方法逻辑过少,并且因为其通用性,使得调用方的风险和影响可能性极大;其次,这样少逻辑的方法何必存在呢?还不如直接去掉service层,直接在controller层调用持久化层的方法就好了,何必多此一举? service层的方法不首先考虑通用性的目的就是我希望将service丰富起来,而不是把业务逻辑“巧妙地”推给controller去完成。service中方法应该具体且使用方式明了,也就是需要符合开闭原则——方法职责明确且单一,不允许随意做出会影响调用方的更改。还是用保存方法举例,如果实体的字段不是很多,建议每个字段都用方法形参来传递,且对参数做必要的校验——明确告诉调用方,这里需要这些字段,传参时不要忘记了(如果是一个实体的对象,即使是少了哪个字段,调用方又怎么会知道呢?一个对象很难描述清楚一个方法的实际规则,方法内做了必要校验还勉强说得过去,但是涉及一些例如创建时间的字段时,也让实体对象传过来,如果有误,岂不是出现难以发现的BUG?) 如果实体的字段非常多呢?建议依然使用方法形参来传参或者创建DTO类,前者同上,后者则不少人会觉得多此一举,这样的DTO字段大部分与实体的字段相同。但其实这样的DTO并非多余,它相当于重新描述了领域。打个比方,实体类就是一栋房子,它不仅包含平地以上的部分,也包含了平地之下的部分,而房子之外的比如道路等不会被描述;而重新定义的DTO则通常只会描述平地以上的部分,且把周边的道路描述清楚。 也就是说,一个领域有它狭义的描述,也有它广义的描述,任何的领域都不会是独立存在的。实体类可以理解为当它独立存在时,进行的狭义的描述;DTO则是在领域与其他领域发生交集或者其他逻辑关联时,对领域的广义描述,而service中方法的逻辑会将这些数据处理后回归狭义,回归实体,回归数据库。 也许,单纯的保存方法过于简单,使得上述的一些解释显得有点苍白无力,但如果某个方法设计较为复杂的业务逻辑时,这样的DTO存在的意义才会被放大,从而有利于我们理解它的作用。 4、controller层保持干净 最后,controller层的代码应该尽量只存在一些校验逻辑以及协调service去完成某个逻辑的代码,主要的逻辑都保留在service中。但是要切记不要钻牛角尖进入了另一个误区,就是:把所有的代码都封装进service,使得controller中基本不会有任何其他的代码——在这里我认为可以有另外一条原则:能够在controller中调用service中的方法去协调完成的话就尽量不要在service中调用另外的service;简单点:原则上不在service中调用service;确实有必要则必须先经过深思熟虑,而不是如何方便如何做——规范的目的是为了更好的维护,同时也保持了架构的完整性,不要在实际书写代码的过程中把原来的架构瓦解。 此外,controller中应该必须使用DTO来接收参数,接口要求是JSON字符串。同时,DTO的参数尽量在DTO内部进行校验,需要复杂逻辑才能校验的才调用service中的方法。 至于VO则视情况而定,这里允许存在实体类等,灵活使用即可。 5、区分DTO,且使用Lombok来省略set、get等 service层的DTO是controller跟service通信的协议标准;controller层的DTO则是请求调用方与项目通信的协议标准。他们的DTO不允许使用在其他任何地方,也就是说它只能用来接收参数,而绝不允许为了方便就将controller的DTO来传到service等地方中去,service中的DTO同理,也不允许传到持久化层或controller层等地方去。这些要求都必须明确遵守。 无论是实体类还是DTO、VO等,都使用Lombok工具来省略冗余代码,节省的时间拿去好好写DTO等,不要觉得这时多余的存在,必须遵循规范。 题外话: MyBatis Plus在版本3之后封装了一些service方法,以供开发者在service中继承后直接在controller中使用,这样的方法在项目中不被允许的原因也是因为违背了上述的规范:不要把controller写成一个大胖子。MyBatis Plus在持久化层干活就够了。 小结: 本文阐述了如何活用service且遵循一定的规范去在基于DDD思想的项目架构中书写代码,如此架构足以应对最高单表数据量在千万级的项目,性能维持在秒级(当然也涉及到数据库优化等,如果没有优化也是不行的,本文不讨论),同时能让项目拥有相对较好的代码规范,留给后期运维更多的空间。

优秀的个人博客,低调大师

OpenLiteSpeed 更新至 1.6.9,开源版轻量高性能 WebServer

OpenLiteSpeed 是 LiteSpeed EnterPrise 的社区版本,相较 Nginx 很多扩展如 Brotli、nginx-cache-purge 等扩展,会因为更新的不及时导致对最新Stable版本的不支持,同时也没有企业级的保障。 而 OpenLiteSpeed 的组件有官方进行主要维护和更新,提供商用企业级的体验。 在性能上,LiteSpeed Tech 提供的 BenchMark 中,在 WordPress、Joomla、OpenCart、ModSecurity、小型静态文件、HTTP/2、HTTP/3 的测试上都比 Apache HTTPD 和 Nginx 有这更好的表现,这不仅仅是跑个 Hello World 而是进行一个完整的测试。 OLS 1.6.9 发布日期:2020-02-20 下载地址 预编译二进制包: https://openlitespeed.org/packages/openlitespeed-1.6.9.tgz 源码包: https://openlitespeed.org/packages/openlitespeed-1.6.9.src.tgz 改进 修正了列出 HTTP/1.1 用于 HTTP/2 连接的访问日志条目 更新 减少了在较低级别写入的 QUIC 日志条目的数量 更新 LSQUIC 到 v2.10.6 修正了 HTTP/3 框架: 不将罕见的事件误解为 Error 修复了 FreeBSD 上的编译问题 BUG修复 修复了由于 QUIC 连接而导致文件上传失败的问题 修复了lsup.sh工具上的一些错误 修复了 CentOS 上 lswsctrl 重启命令失败的问题

优秀的个人博客,低调大师

OpenLiteSpeed – 开源版轻量高性能 WebServer 更新至 1.6.8

OpenLiteSpeed Web Server OpenLiteSpeed 是 LiteSpeed EnterPrise 的社区版本,相较 Nginx 很多扩展如 Brotli、nginx-cache-purge 等扩展,会因为更新的不及时导致对最新Stable版本的不支持,同时也没有企业级的保障。 而 OpenLiteSpeed 的组件有官方进行主要维护和更新,提供商用企业级的体验。 在性能上,LiteSpeed Tech 提供的 BenchMark 中,在 WordPress、Joomla、OpenCart、ModSecurity、小型静态文件、HTTP/2、HTTP/3 的测试上都比 Apache HTTPD 和 Nginx 有这更好的表现,这不仅仅是跑个 Hello World 而是进行一个完整的测试。 OLS 1.6.8 发布日期:2020-02-10 下载地址 预编译二进制包: https://openlitespeed.org/packages/openlitespeed-1.6.8.tgz 源码包: https://openlitespeed.org/packages/openlitespeed-1.6.8.src.tgz 新功能 自动删除过期的缓存内容以节省空间。 可选择跳过 Let's Encrypt 的重写处理。 更新缓存,仅为前端请求提供与 litespeed cache 相关的 header。 改进 修复了内部缓存管理器模块中的一些小问题。 REFRESH URI 缓存请求现在等同于陈旧的清理。 添加了针对URI陈旧清理的响应 header。 提高了缓存清除的准确性。 更新 更新 context 配置,当在目录中自动添加尾随“ /”到对应目录。 更新 lsup.sh 升级工具以添加对-e paramater标志的支持,仅用于升级二进制文件。 BUG修复 修复了未设置“ storagepath”配置设置时未调用缓存清理的问题。 修复了在极少数情况下解析重写规则时发生的崩溃错误。 参考消息:https://www.mf8.biz/ols-1-6-8/

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册