# Page caching and lower/upper case problem

**URL:** <https://www.ruby-forum.com/t/page-caching-and-lower-upper-case-problem/158732>\
**Category:** Rails\
**Created:** [January 27, 2009, 12:35pm UTC](https://www.ruby-forum.com/t/page-caching-and-lower-upper-case-problem/158732 "2009-01-27T12:35:55Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![rmunoz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/dec6dc/32.png) [@rmunoz](https://www.ruby-forum.com/u/rmunoz)\
**Post date:** [January 27, 2009, 12:35pm UTC](https://www.ruby-forum.com/t/page-caching-and-lower-upper-case-problem/158732/1 "2009-01-27T12:35:55Z")

</div>

Hi guys,

I’m with a problem here, on my application, the user can define his own  
URI.  
Like user UserA can create an uri like [www.myapp.com/UserA](http://www.myapp.com/UserA)  
UserB can create an uri like [www.myapp.com/MyNiceUri](http://www.myapp.com/MyNiceUri)

To catch this uri, i’m using this at the end of my routes.rb

map.connect ‘\*path’ , :controller =\> ‘project’ , :action =\> ‘show’

On this controller, I’m also using page cache  
caches\_page :show, :if =\> :project\_exists

Well, so far, so good. But heres the problem.

If some user access the uri [www.myapp.com/MyNiceUri](http://www.myapp.com/MyNiceUri) rails will cache the  
MyNiceUri.html on /public  
Is some other user access [www.myapp.com/MYNICEURI](http://www.myapp.com/MYNICEURI) rails will cache  
MYNICEURIL.html on /public and do on…

Well, this sucks, since to sweep this cache, i have to try a lot of  
upper/lower case combination to make sure  
theres no cache file left on filesystem.

So, theres a way to solve this issue?  
I’m using passenger, maybe i should try any configuration on apache?

Any tips will help.

## Regards,

Rafael

---

<div class="post-metadata">

**Author:** ![rmunoz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/dec6dc/32.png) [@rmunoz](https://www.ruby-forum.com/u/rmunoz)\
**Post date:** [January 27, 2009, 12:42pm UTC](https://www.ruby-forum.com/t/page-caching-and-lower-upper-case-problem/158732/2 "2009-01-27T12:42:58Z")

</div>

On Tue, Jan 27, 2009 at 1:35 PM, Rafael Mueller  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)wrote:

> Well, this sucks, since to sweep this cache, i have to try a lot of  
> Rafael
> 
> >

Why don’t you store the uri in lowercase in the database and then  
translate  
the name to lowercase before looking it up.  
Then operate all your caching etc in lowercase.

–  
Andrew T.  
[http://ramblingsonrails.com](http://ramblingsonrails.com)  
[http://www.linkedin.com/in/andrewtimberlake](http://www.linkedin.com/in/andrewtimberlake)

“I have never let my schooling interfere with my education” - Mark Twain

---

<div class="post-metadata">

**Author:** ![rmunoz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/dec6dc/32.png) [@rmunoz](https://www.ruby-forum.com/u/rmunoz)\
**Post date:** [January 27, 2009, 12:47pm UTC](https://www.ruby-forum.com/t/page-caching-and-lower-upper-case-problem/158732/3 "2009-01-27T12:47:05Z")

</div>

How can I do this?  
:cache\_path doesnt seems to work with page caching.

Regards

On Tue, Jan 27, 2009 at 9:42 AM, Andrew T. \<

---

<div class="post-metadata">

**Author:** ![rmunoz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/dec6dc/32.png) [@rmunoz](https://www.ruby-forum.com/u/rmunoz)\
**Post date:** [January 27, 2009, 1:11pm UTC](https://www.ruby-forum.com/t/page-caching-and-lower-upper-case-problem/158732/4 "2009-01-27T13:11:44Z")

</div>

On Tue, Jan 27, 2009 at 1:46 PM, Rafael Mueller  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)wrote:

> > > Hi guys,  
> > > On this controller, I’m also using page cache  
> > > upper/lower case combination to make sure
> > 
> > “I have never let my schooling interfere with my education” - Mark Twain
> 
> >

You could configure Apache to look for files in the cache directory with  
no  
regard for case.

You could also check the uri against your lowercase version and if they  
don’t match, send a 301 redirect to the lowercase uri.  
Then you’re only ever caching the lowercase version and any other case  
gets  
correctly redirected to the cached version.

If you do this from early on in your project, you shouldn’t have any  
mixed  
case issues because all links etc will go to the lowercase pages.

–  
Andrew T.  
[http://ramblingsonrails.com](http://ramblingsonrails.com)  
[http://www.linkedin.com/in/andrewtimberlake](http://www.linkedin.com/in/andrewtimberlake)

“I have never let my schooling interfere with my education” - Mark Twain
