cache.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // localStorage.js
  2. const Storage = {
  3. // 设置缓存
  4. set(key, value) {
  5. if (key && value !== undefined) {
  6. // 如果 value 是对象或数组,转成 JSON 字符串
  7. if (typeof value === 'object') {
  8. value = JSON.stringify(value);
  9. }
  10. localStorage.setItem(key, value);
  11. } else {
  12. console.warn("Invalid key or value");
  13. }
  14. },
  15. // 获取缓存
  16. get(key) {
  17. if (key) {
  18. const value = localStorage.getItem(key);
  19. if (value) {
  20. try {
  21. // 尝试解析 JSON 格式的数据
  22. return JSON.parse(value);
  23. } catch (e) {
  24. // 如果解析失败,直接返回原始字符串
  25. return value;
  26. }
  27. }
  28. return null; // 如果没有找到缓存项
  29. }
  30. return null;
  31. },
  32. // 删除缓存
  33. remove(key) {
  34. if (key) {
  35. localStorage.removeItem(key);
  36. }
  37. },
  38. // 清空所有缓存
  39. clear() {
  40. localStorage.clear();
  41. },
  42. // 判断缓存是否存在
  43. exists(key) {
  44. return localStorage.getItem(key) !== null;
  45. },
  46. // 获取缓存的所有键
  47. getAllKeys() {
  48. return Object.keys(localStorage);
  49. },
  50. // 设置过期时间,单位:秒
  51. setWithExpire(key, value, expireTimeInSec) {
  52. if (expireTimeInSec && expireTimeInSec > 0) {
  53. const expireDate = new Date().getTime() + expireTimeInSec * 1000;
  54. const data = {
  55. value: value,
  56. expireDate: expireDate,
  57. };
  58. this.set(key, data);
  59. } else {
  60. console.warn("Invalid expire time");
  61. }
  62. },
  63. // 获取带过期时间的缓存
  64. getWithExpire(key) {
  65. const data = this.get(key);
  66. if (data && data.expireDate && new Date().getTime() < data.expireDate) {
  67. return data.value;
  68. } else {
  69. // 如果缓存过期或数据不存在,则返回 null
  70. this.remove(key);
  71. return null;
  72. }
  73. },
  74. };
  75. // 导出 Storage 对象
  76. export default Storage;