Caching data in PHP
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.
精彩评论