开源项目大家谈-网站性能调校-Cache的使用

news/2024/5/13 22:23:06/文章来源:https://blog.csdn.net/weixin_30734435/article/details/98639382

之所以用这个题目是因为很多人常常问我研究开源项目的意义,有一些开源项目在别人眼里看起来完全没有搞头,是一些没有实用价值的项目。其实开源项目往往是新技术的试验田,是全世界优秀程序开发者智慧的汇集,如果你仔细研读这些开源项目,得到的不仅仅是这个项目的功能,而是观摩新的技术,学习比你更聪明人的智慧。

我一直研究的一个开源项目是DotNetNuke(简称DNN),也许你不知道这是一个什么系统,不过你不用关心这是一个什么系统,因为我要讨论的技术在任何一个ASP.NET网站里都有可能用到,只是用这个开源项目做示范罢了,不过你会看到在开源项目里,MSDN里那些死板的技术说明是如何巧妙发挥功能。

这一系列的文章:

开源项目大家谈-网站性能调校-Page State Persistence

开源项目大家谈-网站性能调校-Cache的使用

使用缓存(Cache)

对于缓存(Cache)的概念我想大家都很熟悉,网上也有很多介绍的文章,我在这里就不赘述了。

对网站访问最频繁的部分使用缓存

虽然大家都知道这个概念,但大家在做项目的时候不一定都思考过如何以及何时使用缓存。

我们来看看这个开源系统的这个设置:

image 

对于如何选择这个两项,似乎没什么太难理解的,这里是决定把对module的缓存放在内存里还是放在硬盘里,当然,选择"Memory"会提高速度。

但有一点是我们要学习的,那就是为什么会有这么一个选择。之所以出现这样一个选择,是因为这个开源系统的设计人员发现这个系统对于module这一部分的操作特别频繁,所以对于所有读取出的module信息都会放入缓存,从而加快系统的速度,也就是说,设计人员主动的分析了系统的特点,使用了缓存,这是最值得我们学习的地方。

Cache生存周期对网站性能的影响

在这个开源项目中,我们可以看到这样一个选项,对于"Performance Settings",你可以选择:

  • No Caching
  • Light Caching
  • Moderate Caching
  • Heavy Caching

调节这些设置肯定能调校网站的性能,当到底有什么影响呢?技术上又是如何实现的呢?

image

查看源代码,我们发现PerformanceSettings 的值有三种,分别是0、1、3、6,那这几个值又是如何来控制cache的性能,从而调校整个网站的性能呢?

        Public Enum PerformanceSettings
            'The values of the enum are used to calculate
            'cache settings throughout the portal.
            'Calculating based on these numbers keeps 
            'the scaling linear for all caching.
            NoCaching = 0
            LightCaching = 1
            ModerateCaching = 3
            HeavyCaching = 6
        End Enum
 

我们看看下面的代码就可以明白了:

Dim intCacheTimeout As Integer = 20 * Convert.ToInt32()
DataCache.SetCache(strCacheKey, objFile, TimeSpan.FromMinutes(intCacheTimeout))

原来,系统使用PerformanceSettings的值来控制cache的生存时间,从而为不同特性的网站内容提供不同的cache生存时间,达到调校网站性能的目的。这的确是一个值得学习的精妙设计。

Authenticated Cacheability对网站性能的影响

在这个开源系统的性能设置里,还有一个Authenticated Cacheability的设置:

image

什么是 Authenticated Cacheability

Cache可以应用在服务器端,也可以使用在客户端,客户端对于访问的网页都会进行缓存,但出于某种原因,你也可以指定客户端不缓存你的网页。

当 Web 服务器发送响应时,在它传递的所有信息中包括一个 Cache-Control HTTP 标头,该标头定义可在其上缓存文档的设备。ASP.NET 在 HttpCacheability 枚举中定义这些值。该枚举具有六个值,其中四个值直接映射为 Cache-Control HTTP 标头设置,另外两个特殊值分别为 HttpCacheability.ServerAndPrivateHttpCacheability.ServerAndNoCacheServerAndPrivate 只允许将响应缓存在原服务器和请求客户端上。而 ServerAndNoCache 只允许将响应缓存在原服务器上。

这些设置当然会影响到你网站的性能,相对于做了缓存的页面,没有缓存的页面需要花更多的时间来显示。

这个开源系统利用了这一点,你可以自己选择客户端缓存的方式,有几个选项还会影响到服务器端的缓存。下面是关键的代码:

            If Request.IsAuthenticated = True Then
                ' set client side page caching for authenticated users
                If Convert.ToString(PortalSettings.HostSettings("AuthenticatedCacheability")) <> "" Then
                    Select Case Convert.ToString(PortalSettings.HostSettings("AuthenticatedCacheability"))
                        Case "0" : Response.Cache.SetCacheability(HttpCacheability.NoCache)
                        Case "1" : Response.Cache.SetCacheability(HttpCacheability.Private)
                        Case "2" : Response.Cache.SetCacheability(HttpCacheability.Public)
                        Case "3" : Response.Cache.SetCacheability(HttpCacheability.Server)
                        Case "4" : Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache)
                        Case "5" : Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate)
                    End Select
                Else
                    Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache)
                End If
            End If

对于HttpCacheability的几个值代表的意义如下:

  • NoCache:设置 Cache-Control: no-cache 标头。如果没有字段名,则指令应用于整个请求,且在满足请求前,共享(代理服务器)缓存必须对原始 Web 服务器强制执行成功的重新验证。如果有字段名,则指令仅应用于命名字段;响应的其余部分可能由共享缓存提供。
  • Private: 默认值。设置 Cache-Control: private 以指定响应只能缓存在客户端,而不能由共享(代理服务器)缓存进行缓存。
  • Server: 指定响应仅缓存在源服务器上。与 NoCache 选项相似。客户机接收 Cache-Control: no-cache 指令,但文档是在原始服务器上缓存的。等效于 ServerAndNoCache。
  • ServerAndNoCache: 应用 Server 和 NoCache 的设置指示在服务器上缓存内容,而对服务器以外的其他对象都显式否定其缓存响应的能力。
  • Public: 设置 Cache-Control: public 以指定响应能由客户端和共享(代理)缓存进行缓存。
  • ServerAndPrivate: 指示响应只能在服务器和客户端缓存。代理服务器不能缓存响应。

如何设置Authenticated Cacheability

对于很多网站,内容的保密性要求并不高,所以推荐设置为"Public”,这样能取得最大的性能优势。

更多关于Authenticated Cacheability

关于Authenticated Cacheability更具体的知识大家可以参考下面的几个文档:

[转]Asp.net 缓存(二)--设置页的可缓存性

MSDN: HttpCacheability Enumeration

John Mitchell's (mostly DotNetNuke) Blog

转载于:https://www.cnblogs.com/DotNetNuke/archive/2008/11/20/1337608.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_817257.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

揭秘博友卡通身份 学做SEO链接诱饵

首先我们来揭秘一下各位博主的卡通身份&#xff0c;纯野随机选了几个博主&#xff0c;哈哈&#xff0c;真的是好逗啊。注&#xff1a;&#xff08;若下面的卡通中没有你&#xff0c;可以留言&#xff0c;纯野下期可以把你给放上来亮相&#xff01; 若是你不喜欢请通知纯野进行…

精选国外知名网站手机版网页设计欣赏

互联网发展如此的迅速&#xff0c;手机互联网用户逐渐成了一个相当庞大的群体。所以我们的网站必须去考虑适应手机互联网用户的需求&#xff0c;从传统的电脑互联网到手机互联网(更准确的说是移动互联网)需要有至少两个方面的考虑&#xff0c;一是移动互联网用户的带宽是有限制…

【私活案例3】 获取某市网站普通高中录取分数小工具

私活案例3&#xff1a;获取某市网站普通高中录取分数小工具0 前言年龄越来越大&#xff0c;记性越来越差&#xff0c;只想把自己一些零零散散的私活经历记录下来&#xff0c;日后回头看&#xff0c;还能想起这些小项目、小技术点&#xff0c;还能想起那些和客户、朋友打交道的各…

使用whos.amung.us实时统计网站在线人数

如果需要在前台显示网站实时在线人数&#xff0c;可以使用whos.amung.us提供的一款在线人数实时统计工具&#xff0c;它可以统计你的网站或者博客当前在线人数&#xff0c;支持自定义颜色。 打开&#xff1a;https://whos.amung.us/ 滑动到下面&#xff1a; 直接复制代码&am…

转:利用ArcGIS Server REST API实现对Feature的编辑操作 - 开源IT技术网站

ArcGIS API for Flex中提供了一些工具实现对Feature的编辑操作&#xff0c;不过其实质是对ArcGIS Server REST API的再包装。为了更大的灵活性&#xff0c;在这里我们谈一下如何直接调用ArcGIS Server REST API来实现对Feature的新增、更新、删除操作。 FeatureServer 对Featur…

《大型网站系统与Java中间件》读书笔记 (中)

前言 只有光头才能变强。 文本已收录至我的GitHub仓库&#xff0c;欢迎Star&#xff1a;https://github.com/ZhongFuCheng3y/3y 回顾上一篇&#xff1a; 《大型网站系统与Java中间件》读书笔记&#xff08;一&#xff09;这周周末读了第四章&#xff0c;现在过来做做笔记&#…

.NET技术+25台服务器怎样支撑世界第54大网站

摘要&#xff1a;同时使用Linux和Windows平台产品&#xff0c;大量使用静态的方法和类&#xff0c;Stack Overflow是个重度性能控。同时&#xff0c;取代横向扩展&#xff0c;他们坚持着纵向扩展思路&#xff0c;因为“硬件永远比程序员便宜”。 StackOverflow是一个IT技术问答…

钓鱼网站盯梢微博 360“围剿中奖骗子”

一段时间以来&#xff0c;随着“织围脖”的兴起&#xff0c;微博晋升为全民级互联网应用&#xff0c;而一些曾以短信、聊天工具为主要传播载体的钓 鱼网站也开始悄悄出现在微博上&#xff0c;其伪装方法仍然是老套的——“您中奖了”。对此&#xff0c;360安全卫士官方微博发起…

网站域名续费 服务器续费,域名续费与服务器续费

域名续费与服务器续费 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。帮助用户完成云服务器备份存储库的创建&#xff0c;快速购买…

hexo博客pc端不能访问手机移动端可以访问_Hexo+Kaze+Gitee Pages 搭建静态博客网站...

前言建网站本身是一个很大的工程&#xff0c;涉及前端页面的搭建&#xff0c;网站数据的存储&#xff0c;还要购置服务器资源&#xff0c;甚至是后期的维护&#xff0c;过程相当繁琐。不过如果仅仅是想搭建个人的网站&#xff0c;写写博客&#xff0c;想要美观&#xff0c;又不…

创意无极限:创意产品闪购网站Fab融资1.05亿美元

据国外媒体报道&#xff0c;美创意产品闪购网站Fab今天宣布&#xff0c;公司成功获得1.05亿投资。这个消息最先是由《华尔街日报》爆出的&#xff0c;之后Fab CEO Jason Goldberg在一篇博文中证实了这一消息。 此轮融资之前就有风声传出&#xff0c;而此次融资成功也确实让Fab如…

网易云音乐刷听歌量网站_【java+selenium】网易云音乐刷累计听歌数

背景应该是在去年的时候&#xff0c;刷知乎看到一个问题&#xff0c;大概是说怎么刷网易云音乐个人累计听歌数&#xff0c;然后有一个高赞回答&#xff0c;贴了一段js代码&#xff0c;直接在浏览器console执行就可以了。当时试了下&#xff0c;直接一下子刷了有好几万。悲剧的是…

釜底抽薪闭数千非法网站 新网用行动担起社会责任

非法网站危害社会&#xff0c;必须严惩不贷。近日&#xff0c;作为域名注册领域的领先企业&#xff0c;新网表率同行&#xff0c;近段时间内关闭了数千家非法网站&#xff0c;对网络违法行为打出了一记重拳。 新网重拳出击 数千非法网站无处遁形(图片来源于网络) 众所周知&…

apache shiro 怎么升级_http协议的网站装ssl升级成https

怀着无比激动的心情写此文&#xff0c;因为作为一个前端刚刚踩完此坑成功跨过81难重生&#xff01;对就是它&#xff1a;https://minihome.top 大家试一下吧。A.我有什么&#xff1f;我要做什么&#xff1f;有&#xff1a;一个域名minihome.top一个云服务器 ECS(且能访问miniho…

qq空间网页版电脑_(带手机版数据同步)QQ空间日志说说类网站织梦模板 QQ心情日志网站源码下载...

模板名称&#xff1a;(带手机版数据同步)QQ空间日志说说类网站织梦模板 QQ心情日志网站源码下载本套织梦模板采用织梦最新内核开发的模板&#xff0c;这款模板使用范围极广&#xff0c;不仅仅局限于一类型的企业&#xff0c;资讯类的&#xff0c;QQ空间 日志心情类的的网站都可…

今日头条关键词排名怎么搜索_广州今日头条seo优化排名软件

广州今日头条seo优化排名软件 S1h0l1cjk广州今日头条seo优化排名软件 搜索引擎不关心链接的数量&#xff0c;他们只质量。礼品包装很重要&#xff0c;但对人来说也是如此吗需要介绍内容。上&#xff0c;许多人都害怕风险。在着陆页面有零风险和承诺。.是谈谈用户担心的一些问题…

用python爬取网站数据xlwt、bs4_python爬虫系列--批量爬取码云开源网站数据

python所需要的库 requests —这个库用于访问网站&#xff0c;并获取网页数据 bs4 ---- 用户html的标签解析拿出我们所需要的数据 threading — 使用多线程&#xff0c;可以让我们的爬虫执行效率变高 xlwt — excel表格的操作&#xff0c;用户保存我们所爬下的数据 time — 关于…

左边导航栏右边对应图片_谷歌seo查找图片工具—Mailomix

在之前的文章中Jack老师有提到过如何优化文章内容&#xff0c;其中有提到图文并茂的写作方式对于提高网页体验感是非常重要的.但是随之而来的又一个令人头疼的问题就是&#xff0c;很难找到匹配的图片.要么就是图片差强人意距离文章想表达的意思差了那么一点&#xff0c;要么就…

php网站模板上传教程视频教程,网站模板怎么用

网站模板下载下来之后&#xff0c;很多人不知道怎么使用&#xff0c;下面就由MetInfo来详细分析一下网站模板怎么用才正确。首先&#xff0c;大多数网站模板下载下来之后都是压缩包的形式&#xff0c;我们需要解压查看文件夹里面到底是些什么文件如果文件夹里面全是些静态网页文…

newduba首页怎么去掉_织梦程序网站怎么防止被黑

织梦程序网站怎么防止被黑黑帽seo织梦应该是所有傻瓜建站程序中用户最多的一个&#xff0c;千万用户的网站安全问题都依靠在这款开源程序的开发公司&#xff0c;不巧的是织梦开发团队对于程序的更新速度可以说是龟速&#xff0c;在一个又一个漏洞被挖掘公布出来也无动于衷&…