I once had to store images in a database for a client as he absolutely insisted on it. I also found that serving these images took a lot longer than just directly accessing the image on the filesystem. Granted, it was not a Cake application, but the concepts still hold true.
One of the drawbacks about storing images in a database is that the client won't cache these images. This means that each time the same user requests the page, the images will be retrieved from the database and the user will endure the same delay. Now I am not advocating the use of storing images in the database at all, but I overcame this issue by implementing a caching system. Some might say I just duplicated the amount of effort required to achieve the same result, but my client insisted on storing the images in the database so I had to come up with a solution that met his requirements - and served the users of his website in the best possible way. The basics of it is as follows: 1. write each image from the database to the file system on the server in a tmp folder 2. serve each image by requesting the image through a script - <img src="showimage.php?option=thumb&id=1" /> 3. in the showimage script, select the image data from the database 4. check if the modified field from the table is newer than the temporary image on the file system 5. if it is, write a new image 6. if it isn't, set the exisiting image on the file system as the location 7. check the headers sent by the client to see if they already have a copy of the image in their cache 8. if they do, send 304 not modified and they will see the image they have stored in their local cache 9. if they don't, set last-modified header, send 200 OK and render the image from the server's file system 10. this ensures that they cache that image in their local cache and if they browse to the site again it should serve the image from their local cache if it hasn't changed since the last time I know this seems like a lot of work, but it transformed the site from being unusable to being lightning quick - and my client still had all his images in the database. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---
