我喜欢在浏览器中制作原型(prototype)——使用 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");
我真的不熟悉缓存,而且选项看起来令人畏惧,所以我专门寻找不需要太多配置的东西;我的要求看起来很简单——这只是为了开发,所以不需要优化。
最佳答案
非常简单,只需使用一个对象来存储针对其 url 的请求结果。这样,当您调用 loadImageFromFlickr
时,第一行是这样的......
var cache = {};
function loadImageFromFlickr(url) {
if (cache[url]) return cache[url];
/* fetch the content */
return (cache[url] = functionToGetContent(url));
}
如果您希望副本在 session 期间持续存在(即在服务器重新启动之间保持缓存),那么您应该考虑将内容响应存储在根据 url 键构建的 cache
文件夹中。然后您可以从文件中检索而不是返回缓存对象中的内容。
PS,更简洁return (cache[url] ||= functionToGetContent(url))
关于Javascript 拦截请求并使用我的 VPS 上的缓存副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20776029/