我有一个虚拟文件系统,它本身很慢,因为它使用Web服务作为后端(Google Docs API).
它完全正常,但有一点需要注意:GTK应用程序使用GtkFileChooser,它试图确定文件的内容类型以显示图标或其他内容.当遇到无法通过扩展识别的文件时,它会读取初始数据块以尝试使用它来确定文件类型.在我的情况下,这会导致整个文件从网络下载,这极大地减慢了文件对话框中的目录列表.
事实证明,Gio(GtkFileChooser的后端)支持2种模式用于内容类型发现常规(具有属性’standard :: content-type’)和fast(‘standard :: fast-content-type’),其仅查看文件扩展名.但是,似乎GtkFileChooser仅查询’standard :: content-type’.
最佳答案
看一下glib的源代码,我相信没有办法强制安装在操作系统文件系统层次结构中的虚拟文件系统的快速内容类型发现.从gio的POV,它是一个本地文件系统,因此它假定它具有快速读取访问权限.其他远程文件系统(例如NFS)不受影响,因为精确的内容类型发现只需要查看前4KB的数据.
因此,对于您的情况,我建议以下解决方案:
>下载glib的源代码.在Ubuntu中,您可以输入以下命令:
apt-get source glib2.0
>打开文件gio / glocalfile.c.
>找到函数get_content_type.
>在函数开头添加以下行:
fast = 1;
>编译glib.
>在系统位置安装glib,或使用LD_PRELOAD加载新的gio库.
希望这可以帮助.如果您需要更多细节,请随时告诉我.