开发者

Caching data in PHP

开发者 https://www.devze.com 2022-12-18 16:21 出处:网络
I\'m developing a site in PHP which has some complex SQL queries and I would like to implement a caching feature to reduce the load on the database.

I'm developing a site in PHP which has some complex SQL queries and I would like to implement a caching feature to reduce the load on the database.

I'm just wondering would it be b开发者_运维技巧etter to write and read HTML directly to a file or perhaps create something like a YAML file with a delimiter to separate records then wrap it in HTML with a function?

My thinking is that this would allow user options (for example, number of records to display) to be applied to the request.

Any advice / suggestions appreciated.

Thanks.


Use any of these for caching backends:

  • http://php.net/manual/en/book.apc.php
  • http://memcached.org/
  • http://xcache.lighttpd.net/

and use Zend_Cache for a unified interface to them

  • http://framework.zend.com/manual/en/zend.cache.html

Whether to use full page caching or partial caching depends on your specific UseCases. Usually, your application will have a mix of both.


Although I've never personally used it before, there is a PEAR package for caching. Consider it amongst other options like Zend_Cache.


You can implement caching on multiple places in your application:

  • you can implement conditional GET (ETag and Last-Modified HTTP headers)
  • do data caching with the mentioned solutions (Cache_Lite, Zend_Cache, APC) with multiple backends (file, memcached, shared memory)
  • you can cache the template files as you said (Smarty)


You might want to take a look at Zend Cache
http://framework.zend.com/manual/de/zend.cache.html

I usually store the result of the SQL queries somewhere (depending on what you are looking for, i.e. sometimes is caching it in $_SESSION ok (user related data), sometimes it's not (big resultsets for not user dependant queries) and then my class just checks if the cache exists and continues accordingly.

0

精彩评论

暂无评论...
验证码 换一张
取 消