我不确定这是否属于 Server Fault 或属于软件工程,但由于这很可能与托管我的网站和相关文件的服务器端有关,因此我相信这里可能更合适。如果我错了,请告诉我,以便我们可以将问题迁移到正确的位置。
此外,我也不确定哪些标签最适合,因为我主要是一名软件开发人员,这是我第一次没有服务器团队来处理这些类型的想法或至少为他们提供帮助。
我最近接手了一个网站,里面有大约 1.8GB 的图片文件。其中大部分很可能不再使用,但我现在没有时间对它们进行分类并确定哪些可以保留,哪些可以删除。
更糟糕的是,最近我收到一个请求,要求在这个已经很大的项目中添加大约 105MB 的图像文件。如果我们目前没有将所有这些图像存储在源代码控制中,我一点也不介意。
这使得部署、映射、分支和合并非常耗时且繁琐,因此我希望有一种方法可以将基于内容的文件与代码文件分离,本质上将项目剥离到其基本框架(将来),并从备用位置提取文件,该位置仅在需要时更新,并消除源代码控制中的额外大占用空间(以及我的硬盘,因为我目前在本地机器上有同一个完整项目的 8 个不同分支,用于开发、测试、原型设计等)。
再说一次,我没有太多的时间来解决这个问题,但是通过新的请求,我想避免自己对这个问题做出贡献,而是将我的精力集中在一个长期的解决方案上,我可以将我所有的新内容添加到其中,并在时间允许的情况下慢慢地转换其他所有内容。
到目前为止,我想到的唯一理论是在我的网络服务器上创建一个子域,专门用于保存我可以通过主域的网址提取的内容文件。我不确定这是否是一个好方法,但我的想法可能是这样的。
- 有什么可行的选择能够符合最佳实践,以将其分离出来?
- 这种分离方式可能存在哪些问题?
更新
- 目前已锁定到 TFS 以进行源代码控制。
- 想要从源代码控制中删除图像。
答案1
子域名
将所有图片内容放在子域上会有所帮助。浏览器对单个域中内容的并发能力有限。从浏览器的角度来看,子域被视为单独的域。因此下载时间应该会减少。
托管
另一种可能性是将图像存储在图像托管服务上。这可以节省您的图像管理工作,减少站点网络带宽和加载时间。某些服务具有全球覆盖范围 (CDN),因此可以从最近的节点下载媒体内容,从而减少页面加载时间。
部署
请注意,您的托管可能会或可能不会允许子域名存在于您网站的文档根目录之外。
源代码控制
在处理过大型源代码存储库并解决它们存在的问题后,从存储库中删除所有静态内容将大有帮助。这是一个负担,会危及您的源代码控制安全。当我们将一个大型存储库从我们的服务器迁移到一个非常知名的托管存储库服务时,由于我们的一个存储库规模庞大,我们不得不丢失多年的历史记录。
答案2
- 有什么可行的选择能够符合最佳实践,以将其分离出来?
git LFS 是处理 git 中大文件的解决方案
- 这种分离方式可能存在哪些问题?
- 每个使用 repo 的人都必须安装 Git LFS 客户端
- 存储库需要设置文件跟踪,并且更新.gitattributes文件应该已经推送到仓库。
您可以按照以下链接设置 git LFS https://docs.gitlab.com/ee/workflow/lfs/manage_large_binaries_with_git_lfs.html