Tag: caching控制

自动caching清除静态构build与npm运行良好?

我使用npm作为我的构build工具,通过为我需要的任务使用各种命令填充scripts字段 。 除了一个小的细节之外,我对设置感到满意:在为生产构build时,我希望在<link>标记中引用CSS文件,并在<script>标记中引用JS文件以更新caching清除即通过将?random_string附加到文件名或类似的内容来进行修改)。 我正在使用jade ,以防万一有办法这样做,我错过了。 我不介意解决scheme是否破坏每个文件,即使它们自上次构build之后没有更改。 我所关心的是,它并不要求我在网站上添加复杂的代码(就像一个function,这是它的唯一目的)。 它应该最好是一个外部命令。 到目前为止,我还没有find一个可以接受的解决scheme。 我几乎要诉诸于正则expression式,但真的会有一个更强大的解决scheme。

创build一个大的nodejscaching

我想为我的REST API创build一个大容量的内存caching。 我该如何做到这一点,当caching变得太大,旧的对象被清除? 我正在为这个项目使用nodejs。 编辑 :我暂时做了一个caching类,这是一个可扩展和完全优化的方法? 这里采用的方法是在对象中存在一个指针值( _index ),其中将放置caching资源。 之后,指针递增。 一旦指针达到limit它将被设置回零,并且过程继续,除了指针上的这个时间值被覆盖。 class Cache { constructor(limit = 2048) { if (typeof limit !== 'number' || limit <= 0) { limit = Infinity; } this.limit = limit; this.purge(); } purge() { this._index = 0; this._values = []; this._keys = []; } put(key, value) { if ((let existingIndex […]

Node.js:如何请求一个图像只有当它改变

我正在devise一个node.js应用程序。 其任务之一是定期从一些公共的,外部的网站下载一组图像。 一个要求是避免重复下载没有从以前的下载中改变的图像。 我打算使用“请求”模块,因为它比其他networking模块更加完整和灵活(如果我错了,请纠正我)。 这是我现在使用的代码(请忽略一些错误,如比较date与>或<运营商,认为它是伪代码 …): var request = require('request'); var myResource = { 'url': 'http://www.example.com/image1.jpg', 'last-modified': 'Mon, 28 Sep 2015 08:44:06 GMT' }; request( myResource.url, { method: 'HEAD'}, function (err, res, body) { if (err) { return console.error('error requesting header:', err); } var lastModifiedDate = res.headers['last-modified']; console.log('last modified date:', lastModifiedDate); if (lastModifiedDate > myResource['last-modified']) […]

在Meteor应用程序中使用appcache

我在我的Meteor应用程序中启用了appcache ( http://docs.meteor.com/#/full/appcache )。 但服务器控制台说,我的caching资源的总大小是10.2MB。 从文档看,我必须排除一些文件,因为它们太大了 Meteor.AppCache.config({ onlineOnly: [ '/bigimage.jpg', '/largedata.json' ] }); 问题是我不知道哪些文件太大。 我保持我的文件尽可能分裂,并且由于样式表和JavaScript文件被缩小,我不认为他们使用很多资源。 我的应用程序中没有任何图像或其他特殊文件。 这是纯粹的JS和HTML(甚至没有CSS)。 编辑 我试着检查chrome://appcache-internals/从中我得到以下的细节 http://localhost:3000/ Manifest: http://localhost:3000/app.manifest Size: 10.3 MB Creation Time: Thu Oct 22 2015 08:51:07 GMT+0200 (Romance Daylight Time) Last Access Time: Thu Oct 22 2015 10:16:37 GMT+0200 (Romance Daylight Time) Last Update Time: Thu Oct 22 2015 […]

在ExpressJS中如何caching工作的说明

我已经构build了一个ExpressJS服务器,对一组对象执行计算。 该数组被放置在请求的正文(POST请求)我已经注​​意到,我第一次启动服务器,并发送一个请求,我收到计算的预期结果。 现在,当我发送完全相同的请求到服务器(无需重新启动服务器),我收到了更快的响应。 我认为这是因为ExpressJS可能caching请求/响应。 我已经查看了ExpressJS文档,详细了解了如何在ExpressJS中执行caching,但找不到任何内容。 有人可以解释一下当ExpressJS服务器收到请求时caching是如何工作的,然后再收到完全相同的请求? 有没有办法完全禁用caching?

如何在node.js中获得CNAMElogging的权威TTL值?

我在node.js中构build了一个DNSlogging检查器,并使用native-dns (一个扩展本地节点DNSfunction的包)。 我想获得CNAME ttl的权威答案,您可以使用dig + trace获取答案: dig +trace +nocmd +noall +answer +ttlid a www.google.com native-dns返回的ttl是一个caching的值,所以它随着时间的推移而减less并最终重置。 我已经尝试将平台caching设置为false,如下所示: var dns = require('native-dns') dns.platform.cache = false 并将单个请求caching设置为false,如下所示: var dnsReq = dns.Request({ header: {aa: 1}, question: question, server: {address: '8.8.8.8'}, cache: false }) 这两种方法都不会返回一个静态的,权威的ttl。 有没有人知道一个node.js相当于上面的dig命令? 或者获得权威的ttl值的另一种方式,可能是另一个包,或者从节点执行dig命令并parsing结果(ugh)?

Hapi.js Catbox Redis返回“server.cache不是一个函数”

所以我99%肯定我只是搞砸了一些愚蠢的东西。 我试图设置catboxcaching对象到redis。 我已经redis和运行,我可以用RDM(SQL专业版像redis)打它,但Hapi不合作。 我这样注册redis catboxcaching: const server = new Hapi.Server({ cache: [ { name: 'redisCache', engine: require('catbox-redis'), host: 'redis', partition: 'cache', password: 'devpassword' } ] }); 我这样做在server.js这段代码之后,我继续注册一些更多的插件,并启动服务器。 我也在文件的末尾导出服务器 module.exports = server; 然后在我的路线文件中,我试图设置一个testing路线,如下所示: { method: 'GET', path: '/cacheSet/{key}/{value}', config: { auth: false }, handler: function(req, res) { const testCache = server.cache({ cache: 'redisCache', expireIn: 1000 }); […]

NodeJS重新调整APIcaching的最佳实践

我对NodeJS非常陌生,我正在使用restify构build我的第一个API。 我想找出什么是caching响应数据的最佳做法 – 每个API调用都必须有自己的caching时间。 我已经看过res.cache(),但似乎只有每个用户的请求,而不是全局应用程序caching。 然后我看着restify-cache,但是文档没有清楚地告诉我如何使用它。 我的应用程序是这样的: server.js代码: var restify = require('restify'); var mysqlDB = require('./config/connection'); // REST server declaration and configuration var server = restify.createServer({ name: 'test-api', version: '0.0.1' }); server.pre(restify.pre.sanitizePath()); server.use(restify.queryParser()); server.use(restify.acceptParser(server.acceptable)); server.use(restify.queryParser()); server.use(restify.bodyParser()); server.listen(9007, function() { console.log('%s listening at %', server.name, server.url); mysqlDB.handleDisconnect(); console.log(new Date() +': Started Cricket API on port 9007'); […]

node.js中的自动caching

我想caching一堆logging,几分钟后logging将无效,为了提高性能我想在内存数据库中去。 它只是一个键值,键是string,值是json对象。 它必须集中和扩展到多个节点,它将被Node.JS API和Web应用程序访问 寻找一种解决scheme 在内存caching中 通过键值检索值 解决scheme可以缩放到多个节点 关键时间后必须过期 当前解决scheme MySQL表 每条logging包含到期时间,基于我忽略logging 服务将定期删除过期的logging

如何从http中删除caching获得对js节点的请求

我正在研究节点js的Web应用程序,我正在做一个http获取请求,该地址的数据库和通过查询获取数据。 http get请求在chrome上工作正常,但是在IE上每个get都不会更新,而是从某种caching中返回。 这使得db查询的结果不被更新(因为它是从chache中获取的)。 我可以看到,它正在IE中从F12开发工具的chacheforms中获取: 我的代码如下。 我知道我应该添加如下内容: res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); 我的要求,但我认为我可能把这一行在错误的地方,因为得到reuqest仍然从chache采取,给我不好的结果… … – 客户 $http.get('/users') .success(function(data) { $scope.usersNumber = data.length; }) .error(function(data) { console.log('Error: ' + data); }); 服务器 app.get('/users', function(req, res){ get_user(req, res); }); var get_user= function(req, res){ var query= User_session.find(); query.exec( function(err, docs){ res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); res.json(docs); //mongoose.connection.close(); }); }