问题标签 [zend-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 缓存期间Redis错误“连接读取超时”
我有 Zend Framework 项目,我决定使用Rediska作为 Redis 客户端。Rediska 有 ZF 的缓存后端适配器 - Rediska_Zend_Cache_Backend_Redis。
我从数据库对象集合中获取并尝试将其保存在缓存中,但出现错误:连接读取超时。我的代码示例:
序列化后的内容大小为 26787 字节。也许 Redis 对发送有大小限制?
zend-framework - Zend_Cache_Frontend_Capture 和 Zend_Cache_Frontend_Page 有什么区别
有人可以解释这两个前端 Zend_Cache_Frontend_Capture 和 Zend_Cache_Frontend_Page 之间的区别吗?
Capture 是页面缓存的默认设置......奇怪的是,它使用 get 变量生成 id,但是没有选项可以像页面前端那样设置 make_id_with_get_variables ......
有人可以解释一下吗?
zend-framework - 是否可以使用 Zend_Cache_Backend_Static 将静态页面缓存为 HTML 来限制 Zend Framework 应用程序的 $_GET 参数数量
我刚刚使用 Zend_Cache_Backend_Static 设置了静态页面缓存,以在我的应用程序中提供缓存的 html 文件,效果很好。我唯一担心的是它使用 $_GET 参数缓存文件的方式。因为它会自动创建一个映射到提供的 URL 路由的文件夹结构,所以在可能故意将大量 $_GET 参数附加到现有页面的情况下,这是否存在潜在的安全风险?达到最大目录深度还是最大文件长度?
例如:目前我正在缓存我的页面,/public/cache/static/
因此使用标准路由器/module/controller/action/param1/val1/param2/val2
或标准查询字符串/module/controller/action?param1=val1¶m2=val2
将创建以下目录结构:
允许人们以这种方式(尽管有限)访问创建目录结构让我有点担心。Zend_Cache_Backend_Static 和相应的 Zend_Cache_Frontend_Capture 都必须在 ini 文件中设置,而不是通过 Zend_Cache 工厂,并且似乎没有任何设置选项。
是否只是用限制 $_GET 变量数量的自定义路由替换默认路由器的情况?这可能吗,还是我需要准确指定每条路线所需的变量(不是世界末日,而是更多限制)
更新:
所以现有的处理静态缓存的重写规则如下:
如果请求命中静态缓存中的页面,它将发送该 html 页面。如果不是,它将命中 Zend Framework 并生成它。
我可以在开头添加以下内容:
这将完全擦除我的查询字符串。这很好,因为我仍然可以使用 Zend 框架的 URL 路径方法传递 $_GET 变量(我也通过提供非常明确的路由来限制它)。但是是否可以在不重定向的情况下做到这一点?
php - Zend 缓存后端静态删除/清理
我正在尝试使用 Zend Cache 实现缓存。我使用以下代码来初始化缓存。
我使用以下代码开始缓存:
缓存文件已生成,但我无法使用该remove()
方法删除它们(缓存不刷新):
我究竟做错了什么 ?谢谢。
zend-framework - 用zend缓存整个html输出
我正在尝试使用 Zend_Cache 缓存布局脚本和控制器的操作脚本输出的所有内容,但它无法正常工作。我得到的只是
DEBUG HEADER:这是一个缓存页面!
我得到了 layout.phtml 脚本和 index.phtml 脚本。两者都产生html代码。在我的 IndexController 我放
如何让它工作?我希望 html 代码应该保存在缓存文件夹中。
php - 全页缓存,块更新
我想实现全页缓存,但目前我有 1 个问题要处理。
我们使用基于 Zend 和 Varien 库的电子商务系统:Magento 电子商务社区版。
我能够缓存输出,唯一的问题是,如何处理以下情况:
用户来到网站,然后转到目录/产品并将一些产品添加到购物车,然后返回目录。
问题是当他将产品添加到购物车时,有一些特定的块可能需要更新。所以我可以禁用缓存发布请求,但是我如何更新某些特定的块或如何实现这个“占位符”,它将被更新?我想可能有一些“最佳实践”或缓存模式。
PS致magento家伙:请不要提醒我有关企业版和付费模块的信息。
php - Zend 框架中的内存中脚本缓存后端
我正在寻找内存脚本缓存、使用Zend_Cache
和 zend 框架的解决方案。
我们的应用程序中有几个案例,为了显示一个包含 100 个元素的表格,逻辑如下:
- 从内容表中获取 100 个项目(单个查询)
- 对于每个项目,从 db / memcache 后端获取创建者用户和批准内容的用户(这通常通过 for 循环完成)
在大多数情况下,批准内容的用户是 2 或 3 个管理员用户,但是脚本会多次调用数据库/memecache。更糟糕的是,用户模型必须查询 3 个不同的表才能知道用户属于哪个角色,以及他也属于哪个社区。
所以总而言之,要显示一个包含 100 个项目的表,我们查询数据库(或 memcache 服务器)600 次 :-)
我在这里考虑了2个解决方案:
不要在循环内查询用户表。遍历 100 个项目,获取所有用户 ID 并在单个查询中获取所有用户。我不确定这是否是一个好的解决方案,因为这意味着我必须编写 sql 连接,导致模型函数返回一个
Zend_Db_Table_Row
我们大量使用的 non 。另一种解决方案是在第一次加载时将用户对象保存到内存缓存数组中,下次循环尝试读取用户 ID 时,它将首先在内存缓存中的这个“特殊”中查找。我正在考虑
Zend_Registry
用作缓存后端,类似于这里的解决方案:http: //sameerparwani.com/posts/using-zend_registry-as-a-zend_cache-backend
我们确实使用了 memcache 服务器,但脚本只是查询 memcache 服务器几百次,而不是查询 mysql 数据库。查询 memcache 服务器会更快,但是,由于脚本已经加载了这些数据,我想使用脚本“内存”而不是查询外部服务器。
php - 序列化对象并缓存它们的奇怪行为
我遇到了一个我似乎无法缩小范围的问题。在 Zend Framework 应用程序中,我使用 Zend Cache 来缓存自定义Response对象中包含的潮汐和天气数据。最初创建数据时,一切正常。我序列化它并缓存它。然后当我点击刷新并从缓存中提取数据时,我收到以下错误:
消息:字符串无法解析为 XML
堆栈跟踪:
0 /home/cilosis/mysites/tidely/application/views/scripts/tides/location.phtml(38): SimpleXMLElement->__construct('')
1 /home/cilosis/mysites/tidely/library/Zend/View.php(108): include('/home/cilosis/...')
2 /home/cillosis/mysites/tidely/library/Zend/View/Abstract.php(888): Zend_View->_run('/home/cillosis/...')
...
这发生在我正在访问包含在我的自定义“响应对象”中的 XML 的视图中:
这是第一次运行时(缓存之前)对象相关部分的转储:
在您看到“...”的地方,还有很多其他 XML 数据。XML 来自 NWS(国家气象服务)API,我通过 XML 验证器运行它,它没有显示任何错误。一旦我序列化我的对象并缓存它,问题就会发生。下面是我的 Zend Cache 设置:
我正在用这个进行缓存和检索:
一旦我发出请求并缓存它,$this->response
对象输出如下:
object(Tidely_ResponseData)#65 (7) { ["_querydata"]=> object(Tidely_QueryData)#66 (9) { ["query"]=> string(40) "bayou-la-batre-mississippi-sound alabama" ["source"]=> string(15) "TidesController" ["request_type"]=> string(3) "url" ["url_components"]=> array(2) { ["state"]=> string(7 )“阿拉巴马州”[“位置”]=>字符串(32)“bayou-la-batre-mississippi-sound”}[“return_type”]=>字符串(4)“JSON”[“time_range”]=>数组( 2) { ["start"]=> object(DateTime)#64 (3) { ["date"]=> string(19) "2012-04-05 18:06:51" ["timezone_type"]=> int(3) ["timezone"]=> 字符串(3) "UTC" } ["end"]=>object(DateTime)#63 (3) { ["date"]=> string(19) "2012-04-06 18:06:51" ["timezone_type"]=> int(3) ["timezone"]= > string(3) "UTC" } } ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL } ["_locationdata"]=> object(Tidely_LocationData)# 80 (31) { ["location_id"]=> string(5) "18921" ["station_name"]=> string(33) "Bayou La Batre, Mississippi Sound" ["station_url_name"]=> string(32) " Bayou-la-batre-mississippi-sound" ["station_type"]=> string(11) "下属" ["station_id"]=> string(7) "8739051" ["station_lat"]=> string(8) " +30.3717" ["station_lon"]=> 字符串(8) "-88。2750" ["station_height_offset_high"]=> 字符串(5) "*1.23" ["station_height_offset_low"]=> 字符串(5) "*1.23" ["station_time_offset_high"]=> 字符串(3) "112" ["station_time_offset_low" ]=> 字符串(2) "74" ["station_ref_station_id"]=> 字符串(7) "8760551" ["state_id"]=> 字符串(1) "1" ["state_name"]=> 字符串(7) "阿拉巴马州" ["state_url_name"]=> 字符串(7) "阿拉巴马州" ["timezone"]=> 字符串(2) "-6" ["dst"]=> 字符串(1) "1" ["city_name"] => string(14) "Bayou La Batre" ["city_zip"]=> string(5) "36509" ["city_lat"]=> string(7) "30.4014" ["city_lon"]=>string(8) "-88.2467" ["adjacentStations"]=> string(321) "a:10:{i:8739051;d:2.6562027890531361;s:7:"TEC4393";d:8.0529290086617618;i:8740448;d :11.564338218805837; I:8735180; d:14.637787569358004; I:8741196; d:17.602722038773138; I:8734635; d:17.824002491920826; I:8733810; d:19.474837234444919; I:8737048; d:24.414028460259932; I:8742221; d:27.466706516499691 ;i:8731952;d:31.251405048051701;}" ["city_distance"]=> string(15) "2.6562027890531" ["multipleResults"]=> string(0) "" ["multipleCount"]=> int(0) [ "hasMultiple"]=> bool(false) ["showStates"]=> bool(false) ["showLocations"]=> bool(false) ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL } ["_tidedata"]=> object(Tidely_TideData)#68 (6) { ["tideResults"]=> NULL ["queryStart"]=> NULL ["queryEnd"]=> NULL ["hasError"]=> bool(false) [" userMessage"]=> NULL ["logMessage"]=> NULL } ["_weatherdata"]=> object(Tidely_WeatherData)#79 (6) { ["weatherResults"]=> string(6399) " 气象预报 2012-04- 05T18:06:57Zhttp://graphical.weather.gov/xml/气象发展实验室产品生成处http://www.nws.noaa.gov/disclaimer.html http://www.weather.gov/ http://www.weather. gov/images/xml_logo.gif http://www.weather.gov/feedback.php point1 http://forecast.weather.gov/MapClick.php?textField1=30.37&textField2=-88.28k-p24h-n1-1 2012-04-05T08:00:00-05:00 2012-04-05T20:00:00-05:00 k-p24h-n1-2 2012-04-05T20:00:00- 05:00 2012-04-06T09:00:00-05:00 k-p3h-n5-3 2012-04-05T13:00:00-05:00 2012-04-05T16:00:00-05:00 2012 -04-05T19:00:00-05:00 2012-04-05T22:00:00-05:00 2012-04-06T01:00:00-05:00 每日最高温度 81 每日最低温度 63 温度 79 79 74 69 67 露点温度 66 65 64 64 61 风速 12 11 11 13 14 风向 240 260 280 300 330 相对湿度 64 63 71 84 81 天气类型、覆盖范围和强度条件图标http://forecast.weather.gov/ images/wtf/tsra60.jpg http://forecast.weather.gov/images/wtf/tsra60.jpg http://forecast.weather.gov/images/wtf/scttsra60.jpg http://forecast.weather.gov /images/wtf/nscttsra20.jpghttp://forecast.weather.gov/images/wtf/nsct.jpg " ["queryStart"]=> float(1333649211.6989) ["queryEnd"]=> float(1333649217.2038) ["hasError"]=> bool(false ) ["userMessage"]=> NULL ["logMessage"]=> NULL } ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL }
当我查看源代码时,“weatherResults”部分有 XML ,我没有复制和粘贴它,因为它相当长。这是当我按下刷新并使用上述对象的缓存副本时发生的情况:
object(Tidely_ResponseData)#65 (7) { ["_querydata"]=> object(Tidely_QueryData)#66 (9) { ["query"]=> string(40) "bayou-la-batre-mississippi-sound alabama" ["source"]=> string(15) "TidesController" ["request_type"]=> string(3) "url" ["url_components"]=> array(2) { ["state"]=> string(7 )“阿拉巴马州”[“位置”]=>字符串(32)“bayou-la-batre-mississippi-sound”}[“return_type”]=>字符串(4)“JSON”[“time_range”]=>数组( 2) { ["start"]=> object(DateTime)#64 (3) { ["date"]=> string(19) "2012-04-05 18:10:30" ["timezone_type"]=> int(3) ["timezone"]=> 字符串(3) "UTC" } ["end"]=>object(DateTime)#63 (3) { ["date"]=> string(19) "2012-04-06 18:10:30" ["timezone_type"]=> int(3) ["timezone"]= > string(3) "UTC" } } ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL } ["_locationdata"]=> object(Tidely_LocationData)# 67 (31) { ["location_id"]=> string(0) "" ["station_name"]=> string(0) "" ["station_url_name"]=> string(0) "" ["station_type"]= > string(0) "" ["station_id"]=> string(0) "" ["station_lat"]=> string(0) "" ["station_lon"]=> string(0) "" ["station_height_offset_high" ]=> 字符串(0) "" ["station_height_offset_low"]=> string(0) "" ["station_time_offset_high"]=> string(0) "" ["station_time_offset_low"]=> string(0) "" ["station_ref_station_id"]=> string(0) "" ["state_id"]=> string(0) "" ["state_name"]=> string(0) "" ["state_url_name"]=> string(0) "" ["timezone"]=> string(0) "" ["dst"]=> 字符串(0) "" ["city_name"]=> 字符串(0) "" ["city_zip"]=> 字符串(0) "" ["city_lat"]=> 字符串( 0) "" ["city_lon"]=> 字符串(0) "" ["adjacentStations"]=> 字符串(0) "" ["city_distance"]=> 字符串(0) "" ["multipleResults"]=> string(0) "" ["multipleCount"]=> int(0) ["hasMultiple"]=> bool(false) ["showStates"]=> bool(false) ["showLocations"]= > bool(false) ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL } ["_tidedata"]=> object(Tidely_TideData)#68 (6) { ["tideResults"]=> NULL ["queryStart"]=> NULL ["queryEnd"]=> NULL ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL } ["_weatherdata"]=> object(Tidely_WeatherData)#69 (6) { ["weatherResults"]=> NULL ["queryStart"]=> NULL ["queryEnd"]=> NULL ["hasError"]=> bool(false) ["userMessage"]=>NULL ["logMessage"]=> NULL } ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL }
在序列化/反序列化和保存缓存的过程中,它以某种方式将所有字符串设置为空或NULL!所以当然,我收到了 XML 错误,因为它是空的。
是否有其他人在使用 Zend Cache(或任何其他缓存库)缓存对象时遇到问题?这与序列化有关吗?我缺少缓存设置吗?很抱歉解释太长,并提前感谢您的帮助!
zend-framework - Zend Framework 的后端和前端缓存有什么不同
我正在为使用 Zend Framework 的网站实现缓存。
我查看源代码并看到:
总是需要后端和前端两种配置。
我的问题是:
我不知道为什么后端设置在前端,
它们之间有什么区别?
以下是原始源代码:
php - Zend Framework 缓存存储位置
我将 Zend Framework 和 Zend_Cache 与 File 后端一起使用。
根据 ZF 手册,存储缓存文件的推荐位置将在下,/data/cache
但我认为将它们存储在/temp/cache
. 为什么是/data/cache
首选?
这是我提到的 ZF 手册部分的链接:http: //framework.zend.com/manual/en/project-structure.project.html