default to when missing

J

Jerry Jones

On my website, I have a field in the sql server that lists the image
location/name to display for an item. All is wonderful. How can I have
the site select an 'image is no available' image if the file name it
is looking for does not exist? Right now, it is just showing the
alternate text, which is the image file name it is looking for.
Would it be a big hit on performance to have it check the images dir
for the file name prior to rendering the page, or should it keep an
index somewhere of the files that are there, or am I complete off base
in how to approach this?
 
B

Brian Candler

On my website, I have a field in the sql server that lists the image
location/name to display for an item. All is wonderful. How can I have
the site select an 'image is no available' image if the file name it
is looking for does not exist?

By configuring your webserver appropriately. You don't even mention what
webserver you use, so you're not going to get a more specific answer than
that here.

However, as an example, if you are running Apache httpd then you can ask
this question on the Apache httpd mailing list.
Right now, it is just showing the
alternate text, which is the image file name it is looking for.
Would it be a big hit on performance to have it check the images dir
for the file name prior to rendering the page

Web servers don't render pages - web browsers do. Web servers response to
HTTP requests, and send back the HTML for the page. What the browser does
with it is its own responsibility.

If the HTML contains a reference to an image, a separate HTTP request is
made by the browser to retrieve the image. If the image doesn't exist (web
server returns 404 Not Found) then it's up to the browser what to do next.
Many display a "broken image" icon.

Brian.
 
J

Jerry Jones

I understand that browsers render the page, I could have worded that
better. What I was meaning was when a request is sent, would it be a
serious hit on performance to check for the image file, and if not
present, default to the 'no image available' image. Or would it be
best to have an index of the image file names and when a request is
sent to the server, it checks the index, and if the image file is not
listed, default to the 'no image available' image.
At the moment, I am running Webrick. I am trying to get IIS to work with RoR.
 
B

Brian Candler

I understand that browsers render the page, I could have worded that
better. What I was meaning was when a request is sent, would it be a
serious hit on performance to check for the image file, and if not
present, default to the 'no image available' image.

You mean: when the webserver gets a request for /images/foo.png, and foo.png
does not exist, it returns a default image instead?

Yes this is possible. Under Apache you would use mod_rewrite, using the -f
test to check if a file exists.
Or would it be
best to have an index of the image file names and when a request is
sent to the server, it checks the index, and if the image file is not
listed, default to the 'no image available' image.

I think you are talking about testing the existence of a file in the
filesystem, versus testing the existence of a key in a hash. The hash lookup
will be a bit faster, but I don't think you'll see much difference in
practice; if lots of clients are accessing non-existent files, then the
directory will be cached by the O/S anyway.
At the moment, I am running Webrick.

Then I guess you can serve /images/ from a small piece of Ruby which
implements either of the above strategies.
I am trying to get IIS to work with RoR.

No idea how you would do this with IIS, apart from continuing to map
/images/* to a piece of Ruby.
 
D

David Vallner

Right now, it is just showing the
alternate text, which is the image file name it is looking for.
Would it be a big hit on performance to have it check the images dir
for the file name prior to rendering the page, or should it keep an
index somewhere of the files that are there, or am I complete off base
in how to approach this?

An index will probably flat-out outperform a system call on access, with
the cost being in recomputation of said. However, benchmark. A few stat()s
per request probably won't be a bottleneck anyway.

David Vallner
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,564
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top