动态生成js数据Response.Expires=1440竟然无效?
项目当中有一些数据,比如多语言翻译,要求做语言包,起初当然是做成i18n.js文件,但是每个阶段版本更新都会增加一些key,那么发布的时候只能给<script>的src增加?20180913版本号,令客户端加载新的js。
这么做其实很不方便,平时发布可能忘记更新母版的script版本号。
现在这里有比较一劳永逸的方式:
1、编写Controller,比如
public class LangController : Controller
{
public ActionResult Js(string langType)
{
var data = Get你的数据源(langType);
Response.Write("var lang = "data);
Response.ContentType = "application/x-javascript";
Response.Expires = 1440;
}
}
2、修改你的引用
<script src="/lang/js"></script>
ok,你的js数据源在客户端将缓存1天,确保第2天能取新的(要是觉得不够可以改成1小时、6小时),确保晚间你的发布,用户第二天不会用旧的js。
测试:

Webkit内核,访问,跳转一次URL,显示form cache,确定不会短时间内重复加载。

IE11测试,首次访问

跳转URL,纳尼!怎么还是重新加载。
经过一轮百度、Bing、谷歌之后,消耗2小时调试时间…
增加代码
Response.Write("document.write('" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "');");
关掉IE的F12

IE11测试,首次访问

跳转URL,OK有效。
原因,IE11如果开着F12,会忽略Expires限制,将为你访问服务器获取新资源。
虚惊一场,是不是浪费表情了
动态生成js数据Response.Expires=1440竟然无效?的更多相关文章
- 怎么动态生成js变量
动态生成全局变量: //简单的用字符串作为变量名 window['hello'] = "hello, world"; alert(hello); //批量定义 for(var ...
- 动态生成的DOM做点击事件无效
有时候我们的标签都是从后台获取的数据,然后利用JS添加到页面上,当我们写生成的标签的点击事件(click)时没有效果. 例如: <section> 测试动态生成的DOM点击事件 <b ...
- 动态We API层(动态生成js)
ABP动态webapi前端怎么调用? 研究abp项目时,页面js文件中一直不明白abp.services... 是从哪里来的 在调试SimpleTaskSystem的AngularJs demo时,一 ...
- Echart 动态生成series数据
要做成页面只传入数据,js生成图表,如下图 下面是js代码 var LineChart = function (ID, title, axisData,seriesData) { var myChar ...
- 抓取js动态生成数据
最近在抓数据,一般的网页数据抓取相对容易一些,今天在抓电视猫的节目单,发现有些数据时抓取不到的,Java端得到的HTML文件里面没有某一段代码,查了很多资料,发现说是js动态生成的数据,无法直接抓取, ...
- 爬虫之抓取js生成的数据
有很多页面,当我们用request发送请求,返回的内容里面并没有页面上显示的数据,主要有两种情况,一是通过ajax异步发送请求,得到响应把数据放入页面中,对于这种情况,我们可以查看关于ajax的请求, ...
- JS动态生成表格后 合并单元格
JS动态生成表格后 合并单元格 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单 ...
- jq给动态生成的标签绑定事件的几种方法
经常遇到给动态生成的标签绑定事件不好用,自己简单测试总结了下,结论如下了: body> <!-- 下面是用纯动态方式生成标签 --> <div id="d2" ...
- MVC:页面提交JQ动态生成的输入框的值得解决方案:
一,动态生成JS写法 <script type="text/javascript"> , , , ); function Additional() { var num ...
随机推荐
- PSexec以及xcopy的简单使用
1. 远程执行命令. 有时候不想远程但是想执行一些命令, 比较简单的方法是: 下载systeminternals 然后解压缩后可以讲目录放到path环境变量中 然后打开命令行工具 输入 如下的命令 p ...
- Jquery ajax ajaxStart()和ajaxStop()加载前的优雅表现
Jquery中当一个Ajax请求启动时,并且没有其他未完成的Ajax请求时,将调用ajaxStart()方法.同样,ajaxStop()方法则是在所有Ajax请求都完成时调用.这些方法的参数都是一个函 ...
- Spring AOP切点表达式用法总结
1. 简介 面向对象编程,也称为OOP(即Object Oriented Programming)最大的优点在于能够将业务模块进行封装,从而达到功能复用的目的.通过面向对象编程,不同的模 ...
- MySQL在Read Uncommitted级别下写操作加X锁
很多文章认为MySQL在读未提交(Read Uncommitted)的隔离级别下,写操作是不加锁的,然而实际上并不是,在RU级别下,写操作加有X锁. 实践出真知 以前,我也认为RU隔离级别下,写操作不 ...
- 51nod 1092(lcs)回文字符串
题目:给你一个字符串,问添加最少的字符数目,使之成为回文串 解题思路:将字符串倒置,求出字符串和倒置串的最长公共子序列,字符串的长度减去lcs的长度就是了.. 代码:#include<iostr ...
- jenkins--svn基本使用
新建项目 源码管理 #选择svn配置 svn基本信息配置 其中包括: Repository URL: svn://10.101.0.XXX:9507/XXXX Credentials: 配置你的 ...
- ceph S3测试--cosbench
COSBench安装 Cosbench是Intel的开源云存储性能测试软件,COSBench目前已经广泛使用与云存储测试,并作为云存储的基准测试工具使用 1 环境 1.1 操作系统 COSBench可 ...
- BZOJ4699 树上的最短路(最短路径+dfs序+线段树+堆+并查集)
首先一般化的将下水道和塌陷看成一个东西.注意到在从源点出发的所有需要使用某条下水道的最短路径中,该下水道只会被使用一次,该下水道第一个被访问的点相同,且只会在第一个访问的点使用该下水道.这个第一个访问 ...
- POJ3259(Wormholes) 判断负环
题意: 农夫john发现了一些虫洞,虫洞是一种在你到达虫洞之前把你送回目的地的一种方式,FJ的每个农场,由n块土地(编号为1-n),M 条路,和W个 虫洞组成,FJ想从一块土地开始,经过若干条路和虫洞 ...
- day24 新三级菜单
china = { "shandong":{ "linyi":["lanshan","nanfang","he ...