- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一年前,当我用一个简单的MySQL数据库为人们制作简单的PHP站点时,我被培养成认为在数据库中存储一个完整的图像是可能的,但这是一个糟糕的想法。相反,您应该将映像存储在文件系统中,并简单地将映像路径存储在数据库中。尽管我缺乏经验,但我从一开始就同意这一点。当您将数据库备份到外部服务时,它必须保持数据库的亮度,并使其在实际本地使用时更快。不过,后面这一点完全是推测,我希望有人能澄清我的理论:
当您将与对象相关联的图像作为BLOB存储在数据库中时,当您请求此对象时,是否将整个对象及其属性(包括大量图像信息)写入内存,即使不需要它?例如。
2.0.0p247 :001 > Object.column_names
=> ["id", "name", "blob"]
2.0.0p247 :001 > Object.first.blob
=> # not sure what this will return! I'm guessing a matrix-like wall of image information?
2.0.0p247 :003 > Object.first.name
User Load (0.8ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
=> "Kitty"
Object.first.blob
将花费相当长的时间,因为我们正在检索大量图像信息。但是,
Object.first.name
是否会花费相同的时间,因为
Object.first
会将所有内容,
id
,
name
和
blob
都写入内存?如果这个问题的答案是肯定的,那就是永远不要使用blob的一个很好的理由。然而,如果答案是否定的,而且rails足够聪明,只向内存中写入请求的属性,那么blob突然变得非常有吸引力。
typeA
、
typeB
和
typeC
。假设我有三种类型的图像。所以数据库模式如下:
=> ["image_path","blob","type"]
=> ["name","type"]
types
。
typeB
用户只需输入
/assets/typeAImage.jpg
就可以了!见鬼,即使不是用户的人也能做到。
send_file
方法对我不起作用,因为我没有按照sae的下载向他们发送图像,而是在视图中向他们显示图像*
<% if current_user.type == image.type do %>
<%= image_tag image.blob #=> <img src="/assets/typaAImage.jpg" alt="..." class="..."> %>
<% end %>
<% if current_user.type == image.type do %>
<%= image_tag image.path #=> <img src="/assets/typaAImage.jpg" alt="..." class="..."> %>
<% end %>
/assets/typeAImage.jpg
。如果存储在BLOB中就不可能做到这一点。
send_file
方法是否可以像我描述的那样创建私有映像,并使用文件系统存储映像?
最佳答案
回答第一个问题:是的,在rails中可以延迟加载一些属性,但是默认情况下Active Record不支持它There is a gem for this though。(默认情况下,DataMapper确实支持此功能,而且还有一个plugin for Sequel)。
对于第二部分:您的方法最大的缺点是性能。资产最好通过一个快速、静态的web服务器来提供,该服务器可以从文件系统加载文件,而不是通过一个动态应用程序。不建议阻塞数据库服务器来查询大型blob,特别是因为扩展数据库比扩展文件系统要困难得多。
最后一部分:可以使用各种选项向用户隐藏文件,并仅在需要时提供这些文件。其中一个选项是X-SendFile,或者X-Accel-Redir,您可以在Rails中的返回头中指定一个文件名,代理请求的web服务器(也支持这个头)将接收该文件并为该文件提供服务。这不是重定向,因此URL仍然是相同的,并且该文件仍然可以隐藏起来,不被正常访问。当然,要做到这一点,您必须通过web服务器将请求代理到rails,这通常至少在负载平衡级别已经发生,或者如果您使用的是passenger。
还要注意,在提供普通资产文件时也可以tell Rails to send X-SendFile headers。
Also see this answer.
关于ruby-on-rails - BLOBS的优缺点(安全性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22585605/
ODBC是一种连接数据库的开放标准。 ODBC(OpenDataBase Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows OpenServices Ar
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
在我最近的 javascript 程序中(主要是为了好玩和概念验证)我有很多不同种类的对象,并且每种类型我都有相当数量的“实例”。所以我想我应该为这些使用类,但是由于它们非常简单,我可以直接构造它们而
我想知道图标(Material Design 图标)使用可绘制矢量形状(XML 文件)与图像资源(png 文件)的优缺点是什么? 最佳答案 正如我所见,这个问题是指光栅(例如 jpeg、png)和矢量
优点和缺点是什么使用 Plain Old Data (POD)structs\classes in C++ ? 在什么情况下应该更喜欢使用他们在非 POD 上? 具体来说,POD 在工作时有优势吗与序
我听说 Ctypes 会导致 Python 和 Windows 崩溃(或停止错误)。我应该远离他们的使用吗?我从哪里听到的?当我试图控制窗口的各个方面、自动化之类的东西时,它又回来了。 我听说过 sw
您能否解释一下在 iPhone 上存储数据的不同方式,以及每种方式的优缺点。 我已经阅读了很多关于 UserDefaults、CoreData、XML、plist 的内容……但我有点不知所措。 目前,
但对于关闭PING值后,网站能否被百度和GOOGLE等搜索引擎收录,很多人说法不一,有些说对收录没任何影响,也有人说影响不大,其实会不会影响,我也不是很清楚,我只能从我遇到情况的来分析一下。 7月
我正在寻找一个制作平台。我读过一些关于 gnu make 的文章,它在 Windows 平台上有一些问题(从斜杠/反斜杠到 shell 确定......)所以我想听听我有什么替代品? 如果重要的话,我
我是 Ubuntu Linux 用户,我仅将 Win XP 用于我的工作目的。 最近我用 XP + Visual Studio 2008(由 kvm-quemu 提供支持)设置了一个虚拟机。 我的问题
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 5 年前。 Improv
我对使用Grails Portlets plugin在Grails上开发 Liferay portlet的可能性感兴趣。我认为引入portlet框架(例如Spring Portlet API)将使开发
作为Photon的新手,有以下问题: 看起来 VMware 正在尝试创建与 Docker 并行的容器技术。由于现阶段docker比较成熟,使用photon有什么好处/优势吗? 我知道有人可以在内部使用
我只需要一些关于此布局的建议。我不是经验丰富的 CSS 用户,所以我遇到的唯一技术是将所有内容包装到一个 div 中,设置宽度和自动左/右边距。这种方法是面向 future 的吗? 在我开始之前我应该
我正在使用 jQuery Mobile 和 Phonegap 开发 HTML5 移动应用程序。它将部署在多个平台上。 我在下面有一个横幅 png: 我的问题是: 1)直接用这张图片做背景还是用CSS动
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
这个问题在这里已经有了答案: When is it necessary or convenient to use Spring or EJB3 or all of them together? (2
我最近听说了 JavaScript 对象表示法 (JSON),在查找之后,它似乎作为可扩展标记语言 (XML) 的替代品变得相当流行。 我继续 this页面以获取更多信息,但它似乎更像是一个 XML
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: EF 4.1 Code-first vs Model/Database-first 我刚刚开始学习 EF 4.0 C
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是一名优秀的程序员,十分优秀!