我喜欢在我的浏览器中对原型进行原型化 - 使用Jquery /类似修改DOM,加载脚本,图像,css等,而无需接触文本编辑器或unix shell。
我可以在VPS上安装任何内容,只需从特定脚本下载我要求的网络上的任何文件的副本,因此下次我请求时,它将从我的VPS提供,而不是再次击中原点?显然浏览器已经缓存了大部分内容,但不同之处在于我希望其他机器上的其他用户在我的VPS上获得缓存副本 - 但这与设计无关 -
例如:
require("library-that-checks-for-a-copy-on-my-VPS");
//pulls it down from Flickr's servers
loadImageFromFlickr("flickr.com/kitty18.jpg");
//now there's a copy on my VPS, so it's pulled down from there instead
loadImageFromFlickr("flickr.com/kitty18.jpg");
我真的不熟悉缓存,选项似乎令人生畏,所以我特意寻找的东西不需要太多配置;我的要求看起来很简单 - 这只是为了开发所以它不需要可以优化。
答案 0 :(得分:0)
非常简单,只需使用一个对象将请求结果存储在它的url中。这样当你拨打loadImageFromFlickr
时,第一行是这样的......
var cache = {};
function loadImageFromFlickr(url) {
if (cache[url]) return cache[url];
/* fetch the content */
return (cache[url] = functionToGetContent(url));
}
如果您希望副本在会话中保持不变(即,在服务器重新启动之间保持缓存),那么您应该查看将内容响应存储在根据URL键构造的cache
文件夹中。然后你可以从文件中检索而不是在缓存对象中返回什么。
PS,更简洁return (cache[url] ||= functionToGetContent(url))