问题标签 [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 回答
581 浏览

android - 什么是android中的DiskCache,它与物理硬盘空间有什么不同?

嗨,我在 android 中使用了一个名为 Picasso 的库来在 Recycer 视图中显示图像,它说它将在磁盘缓存中缓存图像,什么是磁盘缓存?我们可以看到以编程方式存储了哪些文件吗?

0 投票
0 回答
187 浏览

containers - 容器是否使用相同的操作系统磁盘缓存?

在单个服务器上运行多个容器时,每个容器是否有自己的 OS 磁盘缓存?或者操作系统磁盘缓存是否在所有容器之间共享?

当有多个物理磁盘,并且任何一个磁盘仅由一个容器使用时,答案是否不同?

Linux和Windows之间有区别吗?

我有两个服务可以进行大量磁盘读取,但每个服务都有自己的数据集。我想优化缓存命中。如果我将它们部署为同一台机器上的 docker 容器,它们会不断刷新彼此的数据吗?

0 投票
1 回答
306 浏览

android - Android 中用于位图(和其他)的 DiskLRUCache

在 android 中,许多图像加载库(如Picasso——它使用 2% 的存储空间用于磁盘缓存,Glide)除了内存中的 lru 缓存外,还使用磁盘缓存。我可以理解为什么这可能对从网络下载的图像有用——如果内存缓存已满,请从磁盘读取它而不是远程获取它们——从而避免网络延迟等。但是,如果我们只是读取本地图像在android设备本身上——我们是否通过使用带有序列化位图数据的单独磁盘缓存获得任何东西——因为无论如何都必须从磁盘读取数据?如果您的应用需要缩略图并对原始图像进行二次采样并将其存储在缓存中,这可能是有意义的吗?是否有任何研究显示性能增益。我在google 示例中看到了磁盘缓存的使用和其他位图缓存库。

0 投票
0 回答
54 浏览

c++ - 添加磁盘缓存后没有性能提升:QtFrameWork(4.8)

我有一个需要通过添加磁盘缓存来改进的应用程序。因为以后会部署在不同的设备上。我已经在测试设备上使用内存缓存测试了当前版本。正如预期的那样,特定页面的第一次加载大约需要 100 多毫秒。之后,由于内存缓存,它减少到 50-80 秒。所以我的下一个方法是通过添加磁盘缓存来提高性能。我已参考此文档了解如何执行此操作。但是在添加磁盘缓存后,与早期版本的应用程序相比,我没有看到初始加载时间有任何改善。

谁能指出我的方法做错了什么?下面给出了相关的代码片段。

网页检查.h

WebPageCheck.cpp

如果有人可以列出使用 Qt 启用磁盘缓存所必须采取的步骤来解释QNetworkRequest.

0 投票
0 回答
136 浏览

qt - 磁盘缓存文件夹为空:Qt 4.8

我正在尝试为我的应用启用磁盘缓存以获得更好的用户体验。我将此文档用作此指南。我最初认为我配置它正确,因为我没有收到任何错误,但后来看到我的磁盘缓存文件夹是空的。然后我到处搜索并尝试了很多东西,但无法解决这个问题。以下是相关的代码片段,

CWMWebPageCheck.h

CWMWebPageCheck.cpp

我在这里做错了什么?提前致谢!

0 投票
3 回答
442 浏览

bash - 当文件被删除时,bash while循环遍历文件不会结束

我在 bash 脚本中有一个 while 循环:

例子:

我的问题是为什么当我在脚本运行时删除 sample_file 时,循环并没有结束,而且我看到 log_file 正在更新?没有输入时循环如何继续?

0 投票
1 回答
437 浏览

java - 缓存java中的锁定策略

我正在开发磁盘缓存(多线程)。缓存可以同时拥有多个用户。这就是为什么我可以写一些规则:

1) 客户端读取文件时,缓存无法编辑(或删除)文件。

2) 当缓存正在编辑文件时,客户端应该等待编辑结束(并且在读取文件之后)。

我需要在 java 的帮助下组织这个锁策略。

我阅读了有关 synchronizatioan(同步块和 java.util.concurrent.Locks)的信息,据我所知,它在这里无济于事。

我试图理解 FileLock。但是当客户端读取文件时,缓存锁可以中止读取。如果客户端在读取之前会锁定文件,那么客户端读取的序列就会很长。我需要建议如何组织它(也许是另一种方式)。

更新

0 投票
0 回答
257 浏览

android - 如何同时使用 DiskLruCache(DiskCache) 和 LruCache(MemoryCache)?

我正在使用两个缓存开发图像加载器。

这是我的逻辑。

1st,开始获取磁盘缓存中的图像(当应用程序启动时)

2、检查内存缓存。如果是,则从缓存内存中加载。

3、如果图像在内存缓存中不存在,检查磁盘缓存。然后将图像放入内存缓存。

4,如果内存缓存和磁盘缓存都没有图像,则使用asynctask从url制作位图。然后把磁盘缓存。

这是我的来源。

一、App的onCreate()

类 BitmapWorkerTask 扩展 AsyncTask、Void、Bitmap> {

第2到第4,getView

问题是“当两个缓存中都没有数据时”。我认为如果那个来源是正确的,当缓存中没有数据时,图像必须在task.execute(arrayList)之后放入磁盘缓存中。但它不是...

所以,我尝试更改 task.execute(arrayList).get(),但这需要太多时间。

我不知道如何解决它......我错过了什么

谁能帮帮我??

0 投票
1 回答
127 浏览

c# - ImageResizer 磁盘缓存 System.IO.IOException

我们的应用程序中记录了以下异常:

System.IO.IOException:系统资源不足,无法完成请求的服务。在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 在 System.IO.FileStream.FlushOSBuffer() 在 System.IO.FileStream.Flush(Boolean flushToDisk) 在 ImageResizer.Plugins.DiskCache.CustomDiskCache.<>c__DisplayClass29_0。 b__0() at ImageResizer.Plugins.DiskCache.LockProvider.TryExecute(String key, Int32 timeoutMs, LockCallback success) at ImageResizer.Plugins.DiskCache.CustomDiskCache.GetCachedFile(String keyBasis, String extension, ResizeImageDelegate writeCallback, Int32 timeoutMs, Boolean asynchronous) at ImageResizer.Plugins.DiskCache.DiskCache.Process(IResponseArgs e) 在 ImageResizer.Plugins.DiskCache.DiskCache.Process(HttpContext context, IResponseArgs e) 在 ImageResizer.InterceptModule。

我们有一个负载平衡环境,其中两个 Web 服务器在单独的文件服务器上使用相同的缓存文件夹。

我们的磁盘缓存配置是这样的:

知道为什么我们会得到这个例外吗?谢谢,

0 投票
1 回答
225 浏览

bash - Running into a race-condition, even with a 'wait'

I'm facing a strange race condition in my bash program. I tried duplicating it via a simple enough demo program but, obviously, as true for all/most timing-related race demonstration attempts, I couldn't.

Here's an abstracted version of the program that DOES NOT duplicate the issue, but let me still explain:

In my original program (and NOT in the above abstracted version), I do see Waiting... done. (wait exited with: 0) on stdout, just as I see in the above version. Yet, the ls -l always fails in the original, but always works in the above abstracted version in the very first while loop iteration.

Also, the ls command fails despite seeing the Instance 1 ended message on stdout. The output is:

I noticed that the while loop can be safely done away with if I put a sleep 1 right before ls in my original program, like so:

Question: Why isn't wait working as expected in my original program? Any suggestions to at least help troubleshoot the problem?

I'm using bash 4.4.19 on Ubuntu 18.04.

EDIT: I just also verified that the call to wait in the original, failing program is exiting with a status code of 0.

EDIT 2: Shouldn't the Instance 1 ended message appear BEFORE Waiting... done. (wait exited with: 0)? Could this be a 'flushing problem' with OS' disk-buffer/cache when dealing with background processes in bash?

EDIT 3: If instead of the while loop or sleep 1 hacks, I issue a sync command, then, voila, it works! But why should I have to do a sync in one program but the other?