Drupal是如何避免页面缓存保存Message信息的
2014-07-02 21:57
316 查看
函数page_get_cache代码:
可见,当message为0时,才会从cache中获取缓存。
再来看看page_set_cache函数,该函数负责保存cache
其中有行代码page_get_cache(TRUE),来判断是否能找到cache,如果不能找到,返回TRUE,这时候才会做页面的缓存。而当drupal_set_message()不为空时,page_get_cache(TRUE)始终都会返回FALSE,可见drupal在获取页面缓存和设置页面缓存时,都对是否有message做了判断,只有message为空时才会设置缓存、或者获取缓存。
function page_get_cache($status_only = FALSE) { static $status = FALSE; global $user, $base_root; if ($status_only) { return $status; } $cache = NULL; if (!$user->uid && $_SERVER['REQUEST_METHOD'] == 'GET' && count(drupal_set_message()) == 0 && $_SERVER['SERVER_SOFTWARE'] !== 'PHP CLI') { $cache = cache_get($base_root . request_uri(), 'cache_page'); if (empty($cache)) { ob_start(); $status = TRUE; } } return $cache; }
可见,当message为0时,才会从cache中获取缓存。
再来看看page_set_cache函数,该函数负责保存cache
function page_set_cache() { global $user, $base_root; if (!$user->uid && $_SERVER['REQUEST_METHOD'] == 'GET' && page_get_cache(TRUE)) { // This will fail in some cases, see page_get_cache() for the explanation. if ($data = ob_get_contents()) { if (variable_get('page_compression', TRUE) && extension_loaded('zlib')) { $data = gzencode($data, 9, FORCE_GZIP); } ob_end_flush(); cache_set($base_root . request_uri(), $data, 'cache_page', CACHE_TEMPORARY, drupal_get_headers()); } } }
其中有行代码page_get_cache(TRUE),来判断是否能找到cache,如果不能找到,返回TRUE,这时候才会做页面的缓存。而当drupal_set_message()不为空时,page_get_cache(TRUE)始终都会返回FALSE,可见drupal在获取页面缓存和设置页面缓存时,都对是否有message做了判断,只有message为空时才会设置缓存、或者获取缓存。
相关文章推荐
- [转]如何分离个人信息,缓存动态页面
- [转]如何分离个人信息,缓存动态页面
- 页面跳转,如何保存之前的页面信息,即保存视图状态
- 【转】如何避免IE对动态页面进行缓存?
- VS2008 在进行ASP.NET 开发时 如何避免加载设计页面时假死及减少保存所耗的时间。
- 如何实现添加多条信息到GridView中,而一次保存到数据库,不被页面刷新而丢失数据呢?
- [转]如何分离个人信息,缓存动态页面
- [DNN学习所得]如何防止页面中的敏感信息被提取
- 如何动态不显示页面底部的版权所有等信息???
- web中,如何读取Word内容(包含表格,但不包含图片)并且显示在页面中或保存进数据库中
- 页面无限跳转间如何保存页面状态
- 如何避免在载入FLASH时IE进行缓存
- 如何使用 @ OutputCache 指令的 VaryByCustom 属性来缓存不同版本的页面
- 如何不允许用户使用浏览器的『后退按钮』查看前面缓存下来的页面
- Enterprise Library 2.0 技巧(2):如何将配置信息保存到数据库中
- 如何不允许用户使用浏览器的『后退按钮』查看前面缓存下来的页面。
- php如何防止页面中的敏感信息被提取
- 页面无限跳转间如何保存页面状态(1)
- 如何在jsp页面中显示BLOB保存的图片数据
- 页面无限跳转间如何保存页面状态