med*_*iev 2 php python serialization
我知道序列化用于将数据类型转换为可存储的格式,用于缓存等目的.
我更具体地问的是,你应该在什么情况下实际决定存储数据(serialize()在PHP中使用,pickle在Python中使用模块等)?
假设我们有一个流量很大的网站,在我们的/blog页面中,我们使用静态内容xml文件,gettext mo文件和动态生成的数据库内容.
示例#1:
我们依赖静态内容的文件是en/blog.xml:
'<content><![CDATA[
<h1>Welcome to my blog!</h1>
<p>Lorem ipsum dolor sit amet..</p>
]]></content>'
Run Code Online (Sandbox Code Playgroud)
我们想要自己序列化这个xml文件并将其存储在缓存中吗?
示例#2:
我们还有一个动态生成的表单,通常我会假设我不会序列化任何东西,因为它是服务器端生成的和动态的,但我们的表单字段标签是国际化的,用户请求这个页面用西班牙语,因此我们使用的是翻译类.抓取以mo/csv/xml格式存储的表单字段标签.
内容contact-us.php:
<label for="first_name"><?php echo $L->_("First Name");?></label>
<input id="first_name" name="first_name" type="text">
Run Code Online (Sandbox Code Playgroud)
"First Name"消息id转换从应用程序级转换文件中提取,我们将其解析并存储在驻留在我们的转换类中的数组中.因此,我们的代码mo在每个页面请求上都不解析文件,而不是在解析mo之后序列化整个数组,然后依赖于序列化的转储,这将是理想的选择.
示例#3:
让我们在我们的博客页面上说我们正在阅读最近的5篇博文.
$posts = BlogClass->sql('SELECT blog_message, blog_author FROM blog_posts LIMIT 5 ORDER BY blog_date DESC');
Run Code Online (Sandbox Code Playgroud)
我们是否希望依赖于memcache之类的东西,只需设置一个键到sql语句的结果,它会序列化查询的结果,还是?
奖金:
如果有人能够提供有效/实际使用/错误使用序列化的具体示例,那就太好了 - 就像一个多页面,巨大的形式,可以提取数据库信息并将内容存储在会话中,或者任何示例你不得不依赖序列化..
轮廓.
如果两个答案都是肯定的,请考虑一下.
轮廓.
如果两个答案都是肯定的,请考虑一下.
轮廓.
如果两个答案都是肯定的,请考虑一下.
我从不会因为可以而序列化我的数据.我需要有理由这样做,否则它只是过早的优化.决定是否应该这样做有几个因素.
这几乎总是一个坏主意.例如,如果您从数据库中序列化结果集,然后需要通过某个字段重新排序此设置,那么您就是在自己的脚下拍摄.
如果您需要将序列化数据传递给其他服务/语言,那么选择序列化至关重要.如果我知道或认为其他事情可能需要阅读它,我会避免使用特定于语言的方法进行序列化.JSON通常是跨语言序列化的理想格式.
您必须愿意重新生成序列化数据以更新其源.对序列化数据进行任何类型的复杂更新将是非常昂贵的.
如果您需要轻松阅读,我建议您避免使用特定于语言的格式.我建议使用JSON.
我再次查看示例3中的查询.这是一个非常简单的查询,您只选择2个字段,并按日期字段排序.使用正确索引的表,此查询应该是微不足道的,我不建议将这样的内容缓存到memcached中.
| 归档时间: |
|
| 查看次数: |
875 次 |
| 最近记录: |