如何使用 @ OutputCache 指令的 VaryByCustom 属性来缓存不同版本的页面(二)
petshop输出缓存设置
petshop的web页面上部的ControlHeader是随着用户登陆的状态有关的,故其设置了VaryByCustom属性以来标识用户不同登陆状态的缓存版本。而Category页面由于可能被大量的访问,并且数据量很大,是十分有必要缓存的,但是由于数据的随机性很大,存在不同的版本,比如说是不同类别的Category,甚至不同的分页显示的数据页,在这里采用了VaryByCustom属性以缓存不同版本的页。
我们再看下其具体实现代码:
VaryByCustom,我们可以自定义输出缓存要求的任意文本。除了在OutputCache指令里面申明该属性之外,我们还得在应用程序的 global.asax 文件的代码声明块中,重写 GetVaryByCustomString 方法来为自定义字符串指定输出缓存的行为。
举一列来说:
<%@ OutputCache VaryByParam="none" VaryByCustom="CategoryPageKey" Location="server" Duration="43200" %>
这里的VaryByCustom定义的为CategoryPageKey,那么在global.asax里面我们必须定义CategoryPageKey这个字符创输出缓存的行为,见下面代码。
public override string GetVaryByCustomString(HttpContext context, String arg) {
string cacheKey = "";
switch(arg) {
case "CategoryPageKey":
if (Request.IsAuthenticated == true) {
cacheKey = "QQQ" + context.Request.QueryString["category_id"] + context.Request.QueryString["requestedPage"];
}
else {
cacheKey = "AAA" + context.Request.QueryString["category_id"] + context.Request.QueryString["requestedPage"];
}
break;
case "SearchPageKey" :
if (Request.IsAuthenticated == true) {
cacheKey = "QQQ" + context.Request.QueryString["search_text"] + context.Request.QueryString["requestedPage"];
}
else {
cacheKey = "AAA" + context.Request.QueryString["search_text"] + context.Request.QueryString["requestedPage"];
}
break;
case "ProductPageKey" :
if (Request.IsAuthenticated == true) {
cacheKey = "QQQ" + context.Request.QueryString["name"] + context.Request.QueryString["product_id"] + context.Request.QueryString["requestedPage"];
}
else {
cacheKey = "AAA" + context.Request.QueryString["name"] + context.Request.QueryString["product_id"] + context.Request.QueryString["requestedPage"];
}
break;
case "ProductDetailsPageKey" :
if (Request.IsAuthenticated == true) {
cacheKey = "QQQ" + context.Request.QueryString["item_id"] + context.Request.QueryString["requestedPage"];
}
else {
cacheKey = "AAA" + context.Request.QueryString["item_id"] + context.Request.QueryString["requestedPage"];
}
break;
case "UserID" :
if (Request.IsAuthenticated == true) {
cacheKey = "UserID_In";
}
else {
cacheKey = "UserID_Out";
}
break;
}
return cacheKey;
}
从上面对CategoryPageKey字符创所作的行为来看,当我们的请求页面中含有对特定的category_id的某一分页显示的数据页的请求时,将调用缓存(自然是已经缓存了该页)。
转载于:https://www.cnblogs.com/leonjoon/archive/2006/08/27/487747.html
如何使用 @ OutputCache 指令的 VaryByCustom 属性来缓存不同版本的页面(二)相关推荐
- 【15】Vue:02-Vue表单基本操作、表单修饰符、自定义指令、计算属性computed、侦听器watch、过滤器、生命周期、数组变异方法、替换数组、动态数组响应数据、图书列表案例、TODOS案例
文章目录 day02 Vue常用特性 表单基本操作 表单修饰符 自定义指令 Vue.directive 注册全局指令 Vue.directive 注册全局指令 带参数 自定义指令局部指令 计算属性 c ...
- JSP中的page指令常用的属性
JSP中指令使用的格式: <%@指令名 属性名="属性值" 属性名="属性值"-%> <%@page pageEncoding="u ...
- 淘宝商品详情页视频接口(视频参数,sku属性参数,销量参数等页面上的数据均可以采集,支持高并发请求)
淘宝商品详情页视频接口(视频参数,sku属性参数,销量参数等页面上的数据均可以采集,支持高并发请求)接口代码教程如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须 ...
- 购物车(七)-计算商品总价——计算总价-计算属性 数据缓存api-wx.setStorageSync()方法
计算商品总价--计算总价-计算属性 & 数据缓存api-wx.setStorageSync()方法 通过计算属性计算商品总价 allPrice() {// 计算购物车所有商品的总价格// 单价 ...
- vue渲染时数据对象里面的子对象的属性报错undefined,但页面正常渲染
vue渲染时数据对象里面的子对象的属性报错undefined,但页面正常渲染. 报如图所示错误 页面中报错的位置 原因是在data中申明了空对象,页面在渲染的时候,数据还没获取到的时候,首先渲染的是初 ...
- vue使用,及指令介绍,计算属性/过滤器
目录 Vue是什么 vue的单页面原理 Vue的使用 指令介绍: v-if和 v-show的区别 v-on 事件绑定: v-bind 绑定属性 处理数组绑定 v-model双向数据绑定 created ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十八║Vue基础: 指令(下)+计算属性
回顾 今天来晚辣,给公司做了一个小项目,一个瀑布流+动态视频控制的DEMO,有需要的可以联系我,公司的项目就不对外展示了(一个后端程序员真的要干前端了哈哈哈). 书接上文,昨天正式的开始了Vue的代码 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十八║Vue基础: 指令(下)+计算属性+watch...
回顾 今天来晚辣,给公司做了一个小项目,一个瀑布流+动态视频控制的DEMO,有需要的可以联系我,公司的项目就不对外展示了(一个后端程序员真的要干前端了哈哈哈). 书接上文,昨天正式的开始了Vue的代码 ...
- Python笔记_64_Vue_M-V-VM思想_显示数据_常用指令_操作属性_绑定事件_操作样式_条件渲染指令_列表渲染指令
文章目录 Vue vue.js的M-V-VM思想 快速使用 显示数据 常用指令 操作属性 绑定事件 操作样式 条件渲染指令 列表渲染指令 Vue vue.js是目前前端web开发最流行的工具库,由尤雨 ...
最新文章
- 虚幻4皮肤材质_虚幻周报20200721 | CJ就要开始啦~
- 天池四月读书会|数据分析金融量化,6场直播,6位大咖,6个项目实战
- LaTeX基础一:安装与基本操作
- C# 采用线程重绘图形要点记录
- python实现矢量分级渲染_AE 栅格图分级渲染
- Which path should be used jdk or jre for JAVA_HOME environment variable?
- node.js中ws模块创建服务端和客户端,网页WebSocket客户端
- ELK详解(十七)——filebeat输出到Redis和Elasticsearch实战
- 如何通过Azure Service Management REST API管理Azure服务
- 如何下载朝阳区卫星地图高清版大图
- leetcode1-5
- word报错“您的组织策略阻止我们为您完成此操作”的解决方法
- 淘宝天猫商家运营,宝贝标题如何突出卖点,标题编写方法小技巧
- ES 按照每隔几分钟,几小时,几天统计折线图
- 关于把war包放在Tomcat的webapps目录下 启动服务 前端访问报404
- 字蛛(font-spider)压缩字体
- 微服务项目实战技术点汇总:“尚硅谷的谷粒在线教育”九、整合阿里云视频播放器、课程评论功能、讲师详情页、课程详情页、检索功能、课程和讲师列表功能
- Android:viewpager+ fragment模拟微信首页
- 奔弛定理与三角形的五星
- IoT产品的10个最佳实践
热门文章
- Codeforces Round #190 (Div. 1): E. Ciel and Gondolas(决策单调性DP+wqs二分)
- bzoj 3316: JC loves Mkk(二分+单调队列)
- bzoj 1096: [ZJOI2007]仓库建设(斜率DP)
- bzoj 1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路(floyd)
- bzoj 3040: 最短路(road)(堆优化dijkstra)
- C++map关联容器2.0
- NYOJ 1272:表达式求值(2016河南省ACM-A)
- C语言实现成块数据读写操作 fread() fwrite()
- DNS 正向查找与反向查找
- Python攻克之路-xml模块