seajs html 缓存,Seajs禁用缓存

本文介绍了一种通过修改SEAJ源码来禁用浏览器缓存和SEAJ内部缓存的方法,以此提升开发阶段的调试效率。具体操作包括添加清除缓存的方法、在请求JS文件URL中加入时间戳等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用seajs模块化,因为浏览器缓存及seasj本身的缓存,调试代码时需要不停的刷新页面,不方便调试,可按如下方法在开发阶段让 浏览器缓存及seajs缓存失效,提高开发调试的效率。

我使用的版本为 seajs-debug.js  3.0.0

(1)修改 seasj-debug.js , 在seajs.use 上方添加 seajs.fetchedList变量、 seajs.removeCache 方法。

6683fd568e3b6d27398843c09f1b3a12.png

//add seajs.fetchedList by cccyb

seajs.fetchedList = fetchedList;

//add by cccyb remove Cache

seajs.removeCache = function(ids,require){

if(S.Debug){

if(isArray(ids)){

for(var i = 0;i

// require时使用 require.resolve

var url = require ? require.resolve(ids[i]) : seajs.resolve(ids[i]);

delete seajs.cache[url];

delete seajs.fetchedList[url];

}

}else{

// require时使用 require.resolve

var url = require ? require.resolve(ids) : seajs.resolve(ids);

delete seajs.cache[url];

delete seajs.fetchedList[url];

}

}

}

(2) sea.use 方法中调用seajs.removeCache()方法

ec465db52ca42ae6ecb1c717088095c7.png

seajs.use = function(ids, callback) {

// cccyb 移除缓存

seajs.removeCache(ids);

Module.use(ids, callback, data.cwd + "_use_" + cid())

return seajs

}

(3)require(id)方法中调用seajs.removeCache()方法

b212a5d8ba4212975c29f4615b504872.png

//cccyb

function require(id) {

// cccyb.删除缓存

seajs.removeCache(id,require);

var m = mod.deps[id] || Module.get(require.resolve(id))

if (m.status == STATUS.ERROR) {

throw new Error('module was broken: ' + m.uri);

}

return m.exec()

}

(4) require.async()方法中调用seajs.removeCache()方法

db22e247cd6a1ac908b6ae2fa737df31.png

require.async = function(ids, callback) {

// cccyb.删除缓存

seajs.removeCache(ids,require);

Module.use(ids, callback, uri + "_async_" + cid())

return require

}

(5) 请求js的url地址添加时间戳,此时IE8经测试会无法正常使用,如需要兼容IE8,可忽略该步骤,采用第6步

eb31b45d9368e19c714461596f6418c9.png

addOnload(node, callback, url)

node.async = true

//node.src = url

node.src = url + '?_' + new Date().getTime();

(6)服务端设置页面缓存失效,以java为例,添加一个过滤器设置response响应头

34bfe48d862beaa41854e4dfe1e8998f.png

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException {

HttpServletResponse resp = (HttpServletResponse)response;

if(PropSsfast.isDevMode()){

resp.setHeader("Cache-Control","no-cache");

resp.setHeader("Pragma","no-cache");

resp.setDateHeader("Expires",0);

}

chain.doFilter(request, response);

}

效果:

6c78581bc7d536b67c80d6a49a88a6cc.png

可以看到重复的js文件每次都是重新请求加载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值