`

网站开发中的文件存储 目录结构的探讨

阅读更多

网站应用中经常会有文件存储的需求,目录结构该怎么建才好呢?让我们来做下分析

  对于少量用户写信息,大量用户都是在看信息的网站:例如CMS系统,编辑发咨询,用户看,例如中小企业产品发布网站。 对于这类需求我们可以把文件专门放到一个目录下,例如放到网站根目录的upload目录下,然后按天建文件夹,将每天的文件放到一个目录下,文件名可采用数字生成。例如:upload/20100612/1224455.jpg;通常的情况下这种目录结构就可以保证每个目录下不会有太多的文件。

  对于博客,论坛应用,需要对每个用户分配文件存储空间,如果有需求的话还要限制用户的存储空间,对于一般规模的网站目录结构可以用用户id+日期的形式;例如upload/234/20100612/abc.jpg。如果规模较大,可以将文件分布到几台不同的服务器上,可以根据用户id制定一个分布的规则,每台服务器用不同的域名,并在数据库中存储文件的完整url地址,这种情况下的路径结构通常是:http://file1.abc.com/upload/234/20100612/abc.jpg。

  我曾经观察过微软的文件下载文件存储的路径结构,他是用guid生成的一个路径,例如:http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe ;它这个结构目录是guid的前三位和guid做了一个4级的目录,这种情况下,就保证了,每个目录下不会有很多目录,因为是guid所以每一个文件都放到一个单一的目录下了,这种结构对于做下载的网站应该是一种不错的选择。

  还有web2.0的网站会涉及到用户头像的存储,头像的存储比较特殊,一个用户固定有那么几个尺寸的图片,我们分析一下开心网和sina的头像地址,看他们是如何做的存储

  1. 开心网的存储,如下是两对链接地址,每对中的第一个是头像地址,第二个是用户首页,首页中的参数是用户id

  http://pic1.kaixin001.com.cn/logo/13/39/50_133973_82.jpg

  http://www.kaixin001.com/home/?uid=133973

  http://www.kaixin001.com/home/?uid=36131662

  http://pic.kaixin001.com.cn/logo/13/16/50_36131662_2.jpg

  可以看出开心网的存储方式是存储到几台不同的服务器上,头像的地址是根据用户的id去划分目录做的存储,id的前4位被分成两个目录,文件名用的是包含前缀+用户id+后缀的方式做的存储。

  2. 如下是两对sina的空间地址,和博客头像的地址

  http://space.sina.com.cn/u/1642511512

  http://portrait1.sinaimg.cn/1642511512/blog/180

  http://space.sina.com.cn/u/1725778305

  http://portrait2.sinaimg.cn/1725778305/blog/180

  Sina博客头像的存储方式和开心不同,是用户id做一级目录,然后加上blog(应该是应用的名字)再加上一个数字180(猜想可能是头像类型的数字);sina和开心的区别是没有图片扩展名,猜想它可能是把头像放到了一个键值对的数据库中,根据url参数从键值对数据库中取出头像的图片数据,然后输出给客户端

  从上面的分析可以猜想开心可能是直接存的文件,而sina可能存储在键值对数据库中,如果数据量很大的话,应该是新浪的方式根据伸缩性。

  最后我们还得提一下为我们提供服务的博客园的存储方式,如下地址:

  http://pic.cnblogs.com/face/u15230.jpg

  http://pic.cnblogs.com/face/u105416.png

  http://pic.cnblogs.com/face/u40200.png

  很简单直观应该是放到了一个目录下,直接用户id做的文件名,没有分目录结构,这样在文件夹中文件过多时是否会引起性能问题呢?

 

分享到:
评论

相关推荐

    网站开发中的文件存储目录结构的探讨

    在网站开发中,文件存储目录结构的设计对网站的性能和管理有着至关重要的影响。一个合理的目录结构不仅可以提高文件的访问效率,还能在系统规模扩大时便于管理和扩展。以下是对几种常见网站应用中文件存储目录结构的...

    多级目录文件系统

    在这个模拟的多用户多级目录的文件系统中,我们探讨的核心知识点包括文件存储空间的管理、文件的物理结构、目录结构以及文件操作的实现。 1. **文件存储空间管理**:在多级目录文件系统中,文件的存储空间通常采用...

    理解 Windows CE .NET 中的文件系统体系结构

    总的来说,理解Windows CE .NET中的文件系统体系结构对于开发人员来说是至关重要的,它涉及到文件的存储、访问、安全以及与其他系统的兼容性等多个方面。只有深入理解这些概念,才能更好地利用WinCE平台进行高效的...

    vivi-techshine目录结构详细目录结构

    本文将深入探讨Vivi-techshine的目录结构以及如何进行Vivi的抓屏操作。 首先,让我们来详细了解一下Vivi-techshine的目录结构: 1. **src**:这是源代码的核心部分,包含了Vivi的主要功能模块,如内核加载、设备...

    Android项目的目录结构和程序的执行流程

    6. **数据持久化**:为了在设备重启或应用关闭后仍能保留用户的数据,Android提供了多种数据存储机制,包括SQLite数据库、文件存储和SharedPreferences。 7. **退出或暂停**:当用户切换到另一个应用或关闭当前应用...

    matlab开发-文件和目录导航工具

    在MATLAB中,文件和目录导航工具是进行代码开发、数据管理及项目组织的重要组成部分。MATLAB提供了丰富的函数和界面工具来实现这一功能,使得用户能够在不同操作系统环境下方便地进行文件操作。本教程将深入探讨如何...

    c#,asp.net,网站开发,net,文件上传和存储

    在这个主题中,我们将深入探讨C#和ASP.NET如何实现文件上传和存储,并分享一个名为“文件存储与上传讲义”的PPT资源,它可能包含了对这个过程的详细讲解。 文件上传是用户通过网页将本地文件传输到服务器的过程。在...

    结构化文件存储之提取文件DEMO

    在IT领域,结构化文件存储是一种组织数据的方式,它允许高效地访问和操作大量信息。在本DEMO中,我们将探讨如何使用Delphi编程语言来提取存储在结构化文件中的内容,特别关注如何处理QQ用户目录下的表情文件。Delphi...

    Android SDK 中文开发文档&Android操作系统详细目录结构

    本文将深入探讨Android SDK的中文开发文档以及Android操作系统的详细目录结构。 首先,我们来看《Android SDK 中文开发文档》。这份文档通常包含了以下关键部分: 1. **Android SDK工具**:这是开发环境的基础,...

    android 文件存储

    在Android系统中,文件存储是应用开发中必不可少的一部分。它涉及到如何有效地管理应用程序的数据,包括保存用户设置、缓存图片、记录日志等。本文将深入探讨Android中的文件存储机制,包括内部存储、外部存储、...

    C#获取某文件夹下的目录树,目录结构

    在C#编程中,构建一个文件夹下的目录树结构是一项常见的任务,这有助于我们更好地管理和操作文件系统。本文将深入探讨如何使用C#语言来实现这一功能,特别是通过递归方法来查找并存储一个文件夹及其子文件夹内的所有...

    Ext框架结构 Ext目录结构

    Ext框架是基于JavaScript的UI库,它为Web应用程序提供了丰富的组件和交互效果。在深入探讨Ext框架结构之前,...在实际开发过程中,结合类结构图和目录结构,可以更快地定位到所需的功能或修复问题,从而提升开发效率。

    Android文件目录及文件访问权限等详解Demo

    本文将深入探讨Android的文件目录结构以及文件访问权限,结合给出的资源列表,我们将探讨如何在实际项目中操作这些概念。 首先,Android系统的文件目录结构是分层的,主要包括以下几个关键部分: 1. **外部存储...

    WP7开发中独立存储文件浏览器

    IsolatedStorageFile是.NET Framework针对移动设备提供的一种本地文件存储解决方案,使得开发者可以在不违反操作系统权限限制的情况下,管理应用程序的私有文件和设置。下面我们将深入探讨WP7开发中独立存储文件...

    matlab开发-文件和目录导航工具.zip.zip

    在MATLAB中,文件和目录导航是编程过程中不可或缺的一部分,特别是在进行项目开发时。这个"matlab开发-文件和目录导航工具.zip.zip"文件很可能包含了帮助开发者更有效地管理MATLAB工作空间、读取和写入文件以及操作...

    linux文件系统结构分析

    在Linux操作系统中,文件系统是组织和存储数据的基础架构,它负责管理磁盘上的文件和目录,使得用户和进程能够高效地访问、读写和管理数据。本篇将深入探讨Linux文件系统的结构,并阐述进程如何操作文件。 首先,...

    ASP.net 递归读出网站上所有目录文件(源)

    在给定的标题“ASP.net 递归读出网站上所有目录文件(源)”中,主要涉及到的技术点是使用递归算法来遍历并读取网站目录下的所有文件。下面我们将详细探讨这一主题。 递归是一种解决问题的方法,它将问题分解为更小的...

    规范化目录结构参考示例.rar

    在Python开发过程中,规范化目录结构是项目管理的重要一环,它有助于提高代码的可读性、可维护性和团队协作效率。本示例"规范化目录结构参考示例.rar"旨在提供一个标准的Python项目目录布局,以供开发者们遵循。下面...

    《Qt Creator创建子目录项目并自定义目标文件输出目录》的示例代码

    在本文中,我们将深入探讨如何使用Qt Creator创建子目录项目,并自定义目标文件的输出目录。这是一项重要的技能,特别是当你开发大型项目时,需要更好地组织源代码和资源,以及控制编译输出的位置。 首先,Qt ...

Global site tag (gtag.js) - Google Analytics