【发布时间】:2010-01-09 06:58:47
【问题描述】:
我知道序列化用于 将数据类型转换为可存储 格式,用于缓存等目的。
我更具体地要问的是,您应该在什么情况下实际决定存储数据(在 PHP 中使用 serialize(),在 Python 中使用 pickle 模块等)?
假设我们有一个高流量网站,在我们的/blog 页面中,我们使用静态内容 xml 文件、gettext mo 文件和从数据库动态生成的内容。
示例 #1:
我们依赖的静态内容文件是en/blog.xml:
'<content><![CDATA[
<h1>Welcome to my blog!</h1>
<p>Lorem ipsum dolor sit amet..</p>
]]></content>'
我们是否要序列化这个 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">
“名字”消息 id 翻译是从应用程序级翻译文件中提取的,我们对其进行解析并存储在一个数组中,该数组位于我们的翻译类中。所以我们的代码最好不要在每个页面请求上解析mo文件,而是在解析完mo之后序列化整个数组,然后依赖它的序列化转储?
示例 #3:
假设在我们的博客页面上,我们正在提取 5 篇最新的博客文章。
$posts = BlogClass->sql('SELECT blog_message, blog_author FROM blog_posts LIMIT 5 ORDER BY blog_date DESC');
我们是想依赖 memcache 之类的东西,只为 sql 语句的结果设置一个键,它会序列化查询的结果,还是?
奖励:
如果有人能提供有效/实际使用/误用序列化的具体示例,那就太好了 - 就像一个多页、巨大的表单,它可以提取数据库信息并将内容存储在会话中,或者您必须依赖序列化的任何示例..
【问题讨论】:
标签: php python serialization