Javascript 拦截请求并使用我的 VPS 上的缓存副本

标签 javascript caching interceptor

我喜欢在浏览器中制作原型(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/

相关文章:

javascript - 在我的 nodejs 测试中自动化用户输入

mysql - 如何在高流量应用时 'refresh' apc缓存?

java - 带生存时间的 EHcache 简单示例

c++ - new/malloc 或 delete/free 是否占用或使缓存行无效?

angular - 在 Angular 中添加 header 'Authorization'

javascript - 课后重置编号

javascript - 如何检查特定字符串是否在innerhtml中?

java - 如何从拦截器发送响应,并停止进一步执行?

java - 从 Struts 2 中的登录拦截器重定向

javascript - 如何使用jquery在前一个元素之前插入?