在前端或后端缓存

use*_*999 1 javascript ajax caching http

现在,我通过ajax将请求发送到后端服务器,该服务器执行一些操作并返回响应:

function getData() {
  new Ajax().getResponse()
    .then(function (response) {
      // handle response
    })
    .catch(function (error) {
      // handle error
    });
}
Run Code Online (Sandbox Code Playgroud)

事实是,每次用户刷新网站时,都会再次发送每个请求。我一直在考虑将它们缓存在本地存储中:

function getData() {
  if (Cache.get('getResponse')) {
    let response = Cache.get('getResponse');
    // handle response
    return true;
  }
  new Ajax().getResponse()
    .then(function (response) {
      // handle response
    })
    .catch(function (error) {
      // handle error
    });
}
Run Code Online (Sandbox Code Playgroud)

这样,如果用户已经发出请求,并且响应被缓存在localStorage内部,则不必从服务器获取数据。如果用户更改的值,则getResponse只需清除缓存。


这是一个好方法吗?如果是,是否有更好的方法可以做到这一点?另外,是否应该以相同的方式缓存后端响应?前端和后端缓存之间有什么区别?

Dok*_*CRO 5

这是一个好方法吗?这取决于您要存储哪种数据

请注意,用户可以更改前端存储的所有内容,因此这是潜在的安全漏洞。

这是后端缓存与前端缓存之间的主要区别,用户无法编辑后端缓存。

如果您决定进行前端缓存,则下面是执行代码的代码:

localStorage.setItem('getResponse', JSON.stringify(response));
Run Code Online (Sandbox Code Playgroud)

用于从本地存储中检索存储的数据

var retrievedObject = localStorage.getItem('getResponse');
Run Code Online (Sandbox Code Playgroud)

注意:

我假设您存储的对象不是字符串或整数。如果要存储字符串,整数,浮点数...只需删除JSON.stringify