js cache-control怎么设置

JavaScript035

js cache-control怎么设置,第1张

cache-control是用于控制网页的缓存.常见的取值有private、no-cache、max-age、must- revalidate等,默认为private。cache-control有哪些属性?其作用根据不同的重新浏览方式分为以下几种情况:cache-control打开新窗口(_blank)private、no-cache、must-revalidate 再次访问服务器Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不 会去服务器)在地址栏回车值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。值为no-cache,那么每次都会访问。值为max-age,则在过期之前不会重复访问。按后退按扭值为private、must-revalidate、max-age,则不会重访问,值为no-cache,则每次都重复访问按刷新按扭无论为何值,都会重复访问 cache-control在哪里设置在IIS的网站属性中的http头信息选项卡中,勾选启用内容过期后有三个相关选项.一、立即过期启用此选项后,每次请求都会向服务器申请下载最新版本。浏览器不做缓存处理。状态返回码200。Cache信息是:no-cache。这种方式可以保证客户端看到的永远是最新版本,也就是说如果服务器端进行了更新,一定能被客户端看到。二、此时段后过期与过期时间这两种情况下,浏览器缓存将其作用。注意,第一次的状态是200,同时cache-control为30天(对应的秒数)。就是说这个网页会有30天的缓存。所以,而后的状态都会是304.cache-control应该怎么设置更好?对于图片,css,等长期不变化的内容应该设置较长的过期时间(如180天)建议:1.对于js和css可以独立到一个二级域名中,启用GZIP,且设置较长的过期时间2.对于图片独立到另一个二级域名中,且设置较长的过期时间对于静态文件(html)如果长期不更新也可以设置稍长的过期时间(如30天),需要根据当前网站的实际而定。对于动态文件(php)可以设置较短的过期时间(如120秒)注意:在过期时间内,如果您对文件内容进行了变化,对于用户或蜘蛛都不能浏览或抓取到你更改后的内容。 这也是动态文件设置较短过期时间的主要原因。cache-control的设置只是为了节约搜索引擎蜘蛛资源,让其抓取更多有效内容,千万不能弄巧成拙。

1、创建一个cache.js文件,前端页面,定义那些数据需要一次性拿到前端缓存,定义一个对象来保存这些数据。

2、前端页面,定义一个函数来调用后台接口获取数据,然后保存到本地缓存对象(dicts)中。

3、在主页面加载的时候调用这个方法一次性获取数据并缓存起来。这样,以后需要同样的数据,就直接从本地对象dicts中获取了。

4、后端Controller,定义一个接口,根据前端的请求,查询数据库(或查询服务器缓存,如下面例子中)获取数据返回给前端。

js中自动清除ie缓存方法 — 常用

对于动态文件,比如 index.asp?id=... 或者 index.aspx?id=... 相信有经验的程序员都知道怎样禁止浏览器缓存数据了.

但是对于静态文件(css,jpg,gif等等), 在什么场合下面我们需要禁止浏览器缓存他们,怎么做?

方法一: Dojo中我们可以用简单的方法完成:在dojo.xhrGet(包括post)等方法中都包含preventCache属性,此属性的含义: “默认为启用浏览器缓存,否则将通过自动增加不同的参数来确保浏览器缓存失效” 我们只要把此属性赋值为:“true”即可。

方法二: document.write("

其中 ver=113 的 113就是版本号,一般都是采用 CVS 或其他工具生成的开发版本号。

这样真正做到了应该缓存的时候缓存静态文件,当版本有更新的时候从获取最新的版本,并更新缓存。

对于图像 来有效利用和更新缓存.

js清除浏览器缓存 二

为了减小浏览器与服务器之间网络传输压力,往往对静态文件,如js,css,修饰的图片做cache,也就是给这些文件的HTTP响应头加入 Expires和Cache-Control参数,并指定缓存时间,这样一定时间内浏览器就不会给服务器发出任何的HTTP请求(除了强制刷新),即使在 这段时间内服务器的js或css或图片文件已经更新多次,但浏览器的数据依然是原来最能初cache的旧数据,有没有办法让浏览器拿到已经修改后的最新数 据呢?

有,方法是用ajax请求服务器最新文件,并加上请求头If-Modified-Since和Cache-Control,如下:

[url=] 复制代码 [/url]代码如下:

$.ajax({

type: "GET",

url: "static/cache.js",

dataType: "text",

beforeSend :function(xmlHttp){

xmlHttp.setRequestHeader("If-Modified-Since","0")

xmlHttp.setRequestHeader("Cache-Control","no-cache")

}

})

这里用了jquery.

这样浏览器就会把最新的文件替换掉本地旧文件。

当然,这里还一个问题就是js必须知道服务器更新了那个js、css、图片,利用cookie和时间版本应该可以解决.

jquery自从1.2开始就有ifModified和cache参数了,不用自己加header

ifModified Boolean Default: false

Allow the request to be successful only if the response has changed since the last request. This is done by checking the Last-Modified header. Default value is false, ignoring the header.

cache Boolean Default: true

Added in jQuery 1.2, if set to false it will force the pages that you request to not be cached by the browser.

[url=] 复制代码 [/url]代码如下:

$.ajax({

type: "GET",

url: "static/cache.js",

dataType: "text",

cache:false,

ifModified :true

})