Naar aanleiding van rob_erwt's post over mooie URL's op tweakblogs.net ben ik gaan nadenken over het behandelen van plaatjes binnen mijn CMS.
Als gebruikers van mijn CMS plaatjes uploaden, krijgt het plaatje op de server dezelfde naam als het geuploade origineel. De meta data wordt in de database opgenomen onder een image_id. Dus:
Het CMS maakt geen gebruik van een WISYWYG editor: gebruikers tikken zelf HTML in. Een popupje helpt de gebruiker een plaatje te selecteren. De popup voegt daarna een image tag met goede image source in, in de textarea waarin de gebruiker een artikel (oid) aan het typen is:
Maar zoals rob_erwt zegt dat titels van blogposts kunnen veranderen, kunnen ook namen van plaatjes veranderen (althans: die optie wil ik gaan inbouwen). Als iemand een plaatje op de server dan hernoemt, kloppen de verwijzingen niet meer. Dus analoog aan tweakblogs zou een conventie als hieronder ideaal zijn:
Nu heb ik het (vaste) img_id in de URL, en (voor de leesbaarheid voor de gebruiker) de naam. Dit vereist echter wel een verandering in de manier waarom het CMS plaatjes behandelt. Nu verwijst "images" immers nog naar een fysieke map binnen de webroot en wordt het plaatje uit die map getrokken. In de nieuwe situatie zou de naam uit de image source er niet meer toe doen: "images" gaat (via mod_rewrite) verwijzen naar een PHP pagina op de server, die kijkt welk plaatje hoort bij img_id "1" en duwt dit plaatje naar de client.
De gebruiker kan nu "tweakers-logo.gif" hernoemen naar "tweaklogo.gif" en ondanks dat er een artikel is waar nog een URL in staat die verwijst naar "tweakers-logo.gif", krijgt de client het goede plaatje voorgeschoteld.
Ik heb hier een aantal vragen over:
Als gebruikers van mijn CMS plaatjes uploaden, krijgt het plaatje op de server dezelfde naam als het geuploade origineel. De meta data wordt in de database opgenomen onder een image_id. Dus:
code:
1
2
3
4
5
| +-------+------------------+------------+------- |img_id |name |mime | etc... +-------+------------------+------------+------- |1 |tweakers-logo.gif | image/jpeg | ...... +-------+------------------+------------+------- |
Het CMS maakt geen gebruik van een WISYWYG editor: gebruikers tikken zelf HTML in. Een popupje helpt de gebruiker een plaatje te selecteren. De popup voegt daarna een image tag met goede image source in, in de textarea waarin de gebruiker een artikel (oid) aan het typen is:
code:
1
| <img src="images/tweakers-logo.gif"> |
Maar zoals rob_erwt zegt dat titels van blogposts kunnen veranderen, kunnen ook namen van plaatjes veranderen (althans: die optie wil ik gaan inbouwen). Als iemand een plaatje op de server dan hernoemt, kloppen de verwijzingen niet meer. Dus analoog aan tweakblogs zou een conventie als hieronder ideaal zijn:
code:
1
| <img src="images/1/tweakers-logo.gif"> |
Nu heb ik het (vaste) img_id in de URL, en (voor de leesbaarheid voor de gebruiker) de naam. Dit vereist echter wel een verandering in de manier waarom het CMS plaatjes behandelt. Nu verwijst "images" immers nog naar een fysieke map binnen de webroot en wordt het plaatje uit die map getrokken. In de nieuwe situatie zou de naam uit de image source er niet meer toe doen: "images" gaat (via mod_rewrite) verwijzen naar een PHP pagina op de server, die kijkt welk plaatje hoort bij img_id "1" en duwt dit plaatje naar de client.
De gebruiker kan nu "tweakers-logo.gif" hernoemen naar "tweaklogo.gif" en ondanks dat er een artikel is waar nog een URL in staat die verwijst naar "tweakers-logo.gif", krijgt de client het goede plaatje voorgeschoteld.
Ik heb hier een aantal vragen over:
- ondanks dat middels het img_id uit de image tag altijd het goede plaatje geserveerd wordt, zul je op termijn toch artikelen krijgen met hardcoded verwijzingen naar plaatjes die niet meer bestaan (tweakers-logo.gif bestaat immers inmiddels niet meer). Hoe zou ik dit tegen kunnen gaan?
- kost het serveren van plaatjes via PHP niet teveel performance? Ik zou plaatjes die veel gebruikt worden (zoals plaatjes voor het sjabloon van de site) apart opslaan, zodat die nog steeds direct vanaf het FS worden geleverd
- heb jij nog andere ideeen, bijvoorbeeld uit jouw CMS?