问题标签 [diskcache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
653 浏览

c# - ImageResizer 和 Diskcache 每次仍然查询我的 IVirtualImageProvider

我正在尝试在 ASP.Net MVC 4 网站中使用 ImageResizer (来自http://imageresizing.net )。我创建了一个 IVirtualImageProvider 来在远程服务器上获取我的图像(实际上通过 Entity 连接到 SQL 服务器)。

一切皆好。奇怪的是,我的提供程序为每个图像请求调用了两次,但视觉结果还可以。

现在,我想测试 DiskCache 插件。所以 Nuget + config... 和... 一切似乎都表现得完全一样:我的远程服务器每次请求都会被调用两次。

不是有什么我不明白的吗?使用 diskcache 应该会阻止我的图像的正常渲染和调用我的提供程序,不是吗?

我的配置:

我的插件:

和 DbFile 类:

我的请求 :

欢迎任何帮助!

0 投票
2 回答
1863 浏览

android - Android缓存图像的最佳方式

我正在尝试为我的应用程序构建缓存从网络下载的图像的最有效方法,几年前我尝试这样做并且找不到有效的方法来完成这项工作,直到我偶然发现发现的惰性列表适配器这里:

ListView 中图像的延迟加载

这在引入 android 4.0 之前运行良好,此时应用程序会在加载 10 到 20 张图像后崩溃,而不是之前我可以简单地加载任意数量的图像而没有任何问题,后来我发现这是一个结果冰淇淋三明治对每个应用程序的内存使用设置了限制,这在 Gingerbread 2.3 及以下版本中不存在,我最终决定每隔 10 左右的图像清除一次缓存以避免崩溃,但是用户体验不是很好由于这样做,该应用程序使用了大量数据,因为它不断地一遍又一遍地重新下载已经查看过的图像,此后我尝试使用 lru 缓存,但这似乎根本不起作用,尤其是当我离开应用程序并重新启动它图像似乎都已发布,我需要一种更好的方法来做到这一点,并且我注意到其他应用程序(例如 instagram)似乎已经找到了一种缓存数百兆图像的方法,我一直不得不在我的设置中手动清除 instagram 缓存,因为它们似乎是为了能够存储似乎永远不会弹出其内容的无限大小的缓存,有人知道如何构建这种缓存吗?

0 投票
0 回答
143 浏览

android - 磁盘缓存、加载时间、网络事务和 Android

首先,我想知道如果网络带宽不是主要问题, “磁盘缓存”真的会改善网络事务的加载时间吗?

当我创建大约 10 MB 的磁盘缓存时,为什么 Android 会花费太多时间?(比网络加载时间差)

是否有任何最佳方法可以将 SQLite 与 ORMLite 一起使用来保存大量数据?因为我的数据带有 JSONFormats,它非常适合直接渲染。但是,当我试图将它们保存在 SQLite 上时,这个过程变得非常冗长。

我正在优化某个网络密集型和繁重的程序。因此,我相信大多数常规方法都无法解决问题。

此致,

0 投票
2 回答
701 浏览

php - 测试正在刷新的磁盘缓存缓冲区

我目前有一个视频文件正在通过shell_exec()电话转换为不同的格式。调用或格式转换没有问题,一切正常;但我的下一步是将该文件推送到 s3 存储桶。

但是,我注意到文件系统缓存不一定会立即刷新我新写入的文件,所以我将一个 0 字节文件推送到 s3,即使每当我在文件系统上查看它时它的长度都是正确的。在调用 shell_exec 和 s3-push 之间在我的代码中插入任意 5 秒睡眠解决了这个问题,但感觉非常糟糕,而且我无法知道 5 秒睡眠是否总是足够的,尤其是在使用更大的视频文件和系统正在加载。

我很确定除非我执行同步调用(再次通过 shell_exec),否则我不能强制刷新磁盘缓存,但我不想使用这种方法,因为它会影响服务器上所有带有任何缓冲数据的文件,而不仅仅是我正在操作的单个文件。

所以我写了这段简单的代码来监控文件大小,直到任何磁盘缓存刷新完成:

基本上,只是循环直到至少有一些东西被刷新到文件中,并且文件大小已经保持一致至少一秒钟。

我不知道的是,磁盘刷新是否只有在所有文件缓存都成功刷新到磁盘时才会更新大小;或者它是否会一次刷新几个块,我可能会发现自己试图将部分刷新的文件推送到 s3 并最终导致它被损坏。

任何意见,将不胜感激。

编辑

现有代码如下所示:

这是对在单个服务器上运行的旧遗留代码的修改,只是将文件存储在服务器的文件系统中;但我已经更改了基础设施以在多个 AWS EC2 应用程序服务器上运行以实现弹性,并使用 S3 在 EC2 之间提供文件资源共享。文件由我们的用户上传到应用服务器,然后转换为 flv 并推送到 S3,以便它们可供所有 EC2 实例使用。

长期解决方案将使用 AWS Elastic Transcoder,此时我可以简单地将原始数据推送到 S3 并向 Elastic Transcoder 提交排队请求,但这还需要一段时间。

0 投票
2 回答
1589 浏览

caching - Volley 中的磁盘缓存不起作用

我正在使用Volley来缓存应用程序中的图像。内存缓存工作正常,但没有图像缓存在磁盘上。代码如下

VolleySingleton.java

图像加载到 CustomAdapter ChannelAdapter.java

0 投票
2 回答
1690 浏览

sync - NFS 上的“同步”命令

我正在通过 NFS 开发备份系统,并且我想尽可能确保文件真正写入磁盘。目前,在本地硬盘上进行备份时,我将所有内容复制到一个临时文件夹中,执行 sync() 以刷新缓存,将临时文件夹重命名为最终名称,然后执行另一个 sync()。这样,如果在备份过程中系统挂起,或者出现电源故障,半成品备份将在一个易于识别的文件夹中,并且可以在系统再次启动时删除并重新启动。

是否可以通过 NFS 执行此操作?执行“远程同步()”调用以确保服务器已将缓存刷新到磁盘?

谢谢。

0 投票
0 回答
45 浏览

caching - 来自不同机器的不同用户的相同 Etag

如果两个用户尝试从两台不同的机器访问托管在 Windows azure 中的站点的相同URL,结果如果他们都获得相同的 ETag。这是否意味着缓存正在 Web 服务器上实现?我在想,如果没有在磁盘(服务器)上实现缓存,每个用户都必须获得一个唯一的 ETag对吗?

请在这里给我一些正确的方向..

0 投票
3 回答
9316 浏览

linux - 如何将 bcache 设备恢复为常规设备

我的笔记本电脑上有一个 20 GB SSD 设备,我决定尝试使用 bcache。它似乎有效,但一段时间以来,我在启动时遇到错误:

我想我可以尝试修复它,但我已经决定我可能最好还是禁用 bcache - 我对此了解的不够多,如果出现问题,我会冒丢失数据/头发的风险,我想我会更好关闭使用分区作为交换更快的休眠。

我的问题是,如何在不重新格式化支持设备的情况下安全地停止在设备上使用 bcache?

我使用 /dev/sda7 作为我的后备设备,使用 /dev/sdb2 作为缓存设备(/dev/sdb1 是 root)。

如果重要的话,我正在运行内核为 3.13.0-21-generic 的 Ubuntu 14.04。

更新:我本质上是在寻找一种解决方案来恢复 make-bcache -B 所做的更改。FWIW,我最终通过将所有内容移动到新分区并删除旧分区来“解决”这个问题(请参阅下面的评论),但如果有人有实际的解决方案,我会留下这个问题。

0 投票
3 回答
12359 浏览

android - Volley 内存不足错误,奇怪的分配尝试

有时 Volley 在启动时随机崩溃我的应用程序,它在应用程序类中崩溃,用户无法再次打开应用程序,直到他们进入设置并清除应用程序数据

“diskbasedbache”试图分配超过 1 GB 的内存,没有明显的原因

我怎样才能让这不会发生?这似乎是 Volley 的问题,或者可能是基于自定义磁盘的缓存的问题,但我没有立即看到(从堆栈跟踪)如何“清除”此缓存或进行条件检查或处理此异常

洞察力赞赏

0 投票
1 回答
1468 浏览

c++ - ifstream, unbuffered read, and no read ahead caching?

I'm trying to accurately determine some of the interactions between a userland program using the C/C++ library and the OS (and its components like the filesystem's Page Cache or Disk Cache). I have two questions.

First, is "unbuffered" in C/C++ library equivalent to "no read ahead" and "no caching" in the OS. Or am I suffering a disconnect?

Second, is it possible to perform un-cached file operations and unbuffered reads using C++'s streams? If so, how does one do it since there does not seem to be any open flags related to it?


The reason I ask is similar to the following. I'm working with a C++ library that provides integration with C++ streams, and I want to make sure I'm not getting any unintentional side effects.

If the stream triggers a read of block or sector size (like 4K or 8K) but I only need 32 bytes, then I'm wasting a lot of potential entropy. I might even deplete it and DoS myself and other programs.

I feel like this question has probably been asked and answered, but I'm not having much luck in finding it.


Here's a related question (thanks to Dietmar): How to disable buffering on a stream?. But it does not address or discuss the unintended side effects that may be present due to OS or filesystem read ahead and caching.